为什么删除张量中的一维会导致InvalidArgumentError:矩阵大小不兼容?

时间:2018-12-08 06:08:37

标签: python tensorflow keras keras-layer keras-2

部分代码:

reshape_out = Reshape((3, 21, 1), input_shape=(21*3,), name='reshape_to_3_21')(output3d)
drop_out = Lambda(lambda x:x[0:2, :, :], output_shape=(2, 21, 1), name='projection')(reshape_out)
flatten_out = Flatten()(drop_out)

我遇到以下错误:

InvalidArgumentError: Matrix size-incompatible: In[0]: [2,63], In[1]: [42,1024].

但是如果

drop_out = Lambda(lambda x:x[0:2, :, :], output_shape=(2, 21, 1), name='projection')(reshape_out)

被删除,一切正常。为什么?

1 个答案:

答案 0 :(得分:0)

第一个轴是批处理轴,似乎您在错误地切片而不是第二个轴:

def drop_output_shape(shp):
    return (shp[0], 2) + shp[2:]

drop_out = Lambda(lambda x: x[:, 0:2, :, :], 
                  output_shape=drop_output_shape, name='projection')(reshape_out)