在我的卷积网络中,我最近根据this question的回答添加了一个Lambda层作为输入层,用于选择输入图像的特定通道
model.add(Lambda(lambda x: x[:,:,:2], input_shape=(w, h, 3)))
当我尝试添加MaxPooling2D层时,出现错误ValueError: Negative dimension size caused by subtracting 3 from 2 for 'max_pooling2d_14/MaxPool' (op: 'MaxPool') with input shapes: [?,250,2,64]
我以为在Theano和Tensorflow暗淡顺序之间犯了一些错误,所以我编辑了Lambda层:
model.add(Lambda(lambda x: x[:2,:,:], input_shape=(w, h, 3)))
这次,添加更多层没有问题,但是当我尝试使用fit_generator
时,出现错误:InvalidArgumentError: Incompatible shapes: [64] vs. [2]
追溯的时间很长,我将它们上传到here。
我正在Linux上使用4 GPU进行计算,谢谢您的帮助。
答案 0 :(得分:0)
问题出在我使用Lambda层对输入进行切片的方式上。
输入形状按此顺序具有4个属性:batch_size,宽度,高度,通道。
对于选择输入数据的多个数组,由于Tensorflow不支持numpy的高级索引方法,因此我们应该首先对输入张量进行切片,使用dim扩展添加颜色深度,然后再对其进行串联。