Keras模型预测火车/测试形状

时间:2017-01-14 14:02:45

标签: machine-learning theano keras

我正在使用Keras训练CNN,但是图像中有30x30补丁。我想用完整的图像测试网络,但是我收到以下错误:

  

ValueError:GpuElemwise。输入维度不匹配。输入2(指数   从0开始具有shape [1] == 30,但该轴上的输出大小为   100.应用导致错误的节点:GpuElemwise {Composite {((i0 + i1) - i2)}} [(0,0)](GpuDimShuffle {0,2,3,1} .0,GpuReshape {4}。 0,   GpuFromHost.0)Toposort索引:79输入类型:   [CudaNdarrayType(float32,4D),CudaNdarrayType(float32,(True,True,   True,False)),CudaNdarrayType(float32,4D)]输入形状:[(10,100,   100,3),(1,1,1,3),(10,30,30,3)]输入步幅:[(30000,100,   1,10000),(0,0,0,1),(2700,90,3,1)]输入值:['not not   显示',CudaNdarray([[[[[0.01060364 0.00988821 0.00741314]]]]),'not not   显示']输出客户:   [[GpuCAReduce {pre = sqr,red = add} {0,1,1,1}(GpuElemwise {Composite {((i0 +   i1) - i2)}} [(0,0)]。0)]]

这是我的model.predict:

predict_image = model.predict(np.array([test_images[1]]), batch_size=1)[0]

似乎问题是输入大小不能是30x30以外的任何东西,但我网络第一层的第一个输入形状是none,none,3。

model.add(Convolution2D(n1, f1, f1, border_mode='same', input_shape=(None, None, 3), activation='relu'))

是否根本无法测试与我训练过的图像尺寸不同的图像?

1 个答案:

答案 0 :(得分:0)

正如fchollet自己描述的那样here,你应该能够如此定义输入:

input_shape=(1, None, None)

但是,如果您有使用Flatten操作的图层,则会失败。

这表明您应该能够使用完全卷积的NN来实现目标。