def generate_intermediate_layers(net): """Takes the output from the decapitated googlenet and transforms the output from a NxCxWxH to (NxWxH)xCx1x1 that is used as input for the lstm layers. N = batch size, C = channels, W = grid width, H = grid height.""" net.f(Convolution("post_fc7_conv", bottoms=["inception_final_output"], param_lr_mults=[1., 2.], param_decay_mults=[0., 0.], num_output=1024, kernel_dim=(1, 1), weight_filler=Filler("gaussian", 0.005), bias_filler=Filler("constant", 0.))) net.f(Power("lstm_fc7_conv", scale=0.01, bottoms=["post_fc7_conv"])) net.f(Transpose("lstm_input", bottoms=["lstm_fc7_conv"]))
import apollocaffe from apollocaffe.layers import NumpyData, Convolution, EuclideanLoss import numpy as np net = apollocaffe.ApolloNet() for i in range(1000): example = np.array(np.random.random()).reshape((1, 1, 1, 1)) net.clear_forward() net.f(NumpyData('data', example)) net.f(NumpyData('label', example * 3)) net.f(Convolution('conv', (1, 1), 1, bottoms=['data'])) net.f(EuclideanLoss('loss', bottoms=['conv', 'label'])) net.backward() net.update(lr=0.1) if i % 100 == 0: print net.loss