User 2042 | 6/10/2015, 5:44:35 AM
I am using Graphlab Create v1.4.0.gpu and first of all I want to tell that it's a great tool. There have been visible improvements from v1.3.0. But there's something that I don't get right now in graphlab.deeplearning.NeuralNet. How does it actually handle invalid convolution layer in a neural network? To give an example, let's say I have 256x256 images as the input of the net, and after that I want a convolution layer with kernel size 3, stride 2 and no padding. This wouldn't be structurally possible, since the output size, (256-3)/2 + 1 is not an integer. But it somehow works without giving any errors, and it even finishes the training successfully, the neural net delivering decent results. So I would like to know what does it do in case of invalid network architecture. Does it skip some pixels of the input in order for the output size to 'fit'? IF it does this, it should at least be reported in some way. Even better would be to automatically display the sizes of all the layers at the start of the training process. And something else I would like to point is that the activation layer between successive conv layers should be more visible. I suppose that if you stack two conv layers and don't set and activation function explicitly between, sigmoid will be used, but this should at least be displayed at the start of the training process. I say this because I tried to explicitly put relu layers after conv layers and the network gives really really poor performance, and it should at least perform similarly, as relu has been proved to be better thatn sigmoid and tanh in convolution networks.