代码之家  ›  专栏  ›  技术社区  ›  BAE

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

  •  0
  • BAE  · 技术社区  · 6 年前

    部分代码:

    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 回复  |  直到 6 年前
        1
  •  0
  •   today    6 年前

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

    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)