ModuleNotFoundError: No module named 'mmcv._ext'

If you are getting this error when trying to run the latest version of mmdet with the latest version of mmcv (installed via pip), this solves the problem 
pip uninstall mmcv mmcv-full
git clone
cd mmcv
MMCV_WITH_OPS=1 pip install -e .

Labels: machine_learning, pytorch
No comments

So that I can remember next time I need to do it :

  1. Attach the volume to the instance
  2. From the instance:
    1. lsblk
    2. mkdir /whatever
    3. mount /dev/xvdf /whatever/

Labels: ec2
No comments

Git Through Proxy Server

Monday 11 May 2020

As of a few days ago they must have changed something in the corporate proxy server at work because all of a sudden no one could push or pull to git remotes. I was getting error "fatal: unable to access [proxy server address]: Timed out"

After much frustration, it turns out there was a fairly simple solution. I had http_proxy and https_proxy environment variables set to the proxy server. If I set an environment variable "no_proxy" with the values of the domains I need to connect to with git everything works fine.

Labels: git

Javascript and React

Saturday 15 February 2020

In university I was a TA for what they called "third stream computing," which was basically simple computer programming for non-CS people. We covered things like Hypercard, HTML and Javascript, which at the time was limited to things like showing alerts and validating and submitting forms. I think that the idea of Javascript as a very simple and not very powerful language has stuck with me through the years, even while Javascript has been maturing and advancing enormously.

A few weeks ago I decided one morning to spend an hour going through a ReactJS tutorial, because I keep hearing so much about it. After about half an hour I stopped the tutorial and starting rewriting something I was working on in React. Since then I've been doing any web-related work in React and re-writing other web stuff I've previously done in React.

Javascript frameworks like React are going to completely change web development, instead of the back-end serving HTML the back-end will now serve JSON through APIs and the front-ends will probably mostly be Javascript. And in my opinion that's a much better and more efficient way to create interactive websites. Not only is it faster to load and render data on the front-end, but it's much cleaner in terms of code and separating functionality. 

Labels: javascript, react


Sunday 08 December 2019

I had been trying to train a version of VAE-GAN for a few weeks and it wasn't working as well as I had hoped it would. I had added an auxiliary output to the discriminator which was attempting to predict the 40 features of each image provided with the celeb-a dataset as suggested in the VAE-GAN paper and I was scaling that loss to try to bring it in line with the GAN discriminator loss, but I was doing that incorrectly so that loss ended up overwhelming the GAN loss. (I was summing, rather than averaging the losses, and the lambda I was using to scale the loss was appropriate for a mean loss, but with 40 features the auxiliary loss was 40x the GAN loss at base, so I needed to divide the lambda by 40 to get the effect I wanted.)

After having corrected that error I am finally making some progress with these models. Below are sample images from two models I am training. The first outputs images at 160x160, the second at 128x128.

I guess the moral of this story is if something isn't working the way you expect it to, double check your math before you continue training it!

Labels: python, machine_learning, pytorch, gan