这是怎么回事,如何正确使用Keras的Minimum()层?
start = Input(shape=(28,28,1), dtype='float32')
c = Conv2D(20,3,use_bias=False,data_format="channels_last",input_shape=(28, 28, 1),padding='same')(start)
c = Reshape((28,28,20,1))(c)
m = MaxPooling3D(pool_size=(1,1,20), strides=1, padding='valid', data_format="channels_last")(c)
m = Reshape((28,28,1))(m)
m = Minimum()([m,mask])
print(m.shape, mask.shape)
f = Flatten()(m)
print(f.shape)
out = Dense(10,activation='softmax')(f)
model = Model(inputs=start, outputs=out)
输出:
(60000, 28, 28, 1) (60000, 28, 28, 1)
(60000, 784)
AttributeError Traceback (most recent call last)
<ipython-input-21-e0fab99c12c2> in <module>()
9 print(f.shape)
10 out = Dense(10,activation='softmax')(f)
---> 11 model = Model(inputs=start, outputs=out)
AttributeError: 'NoneType' object has no attribute '_inbound_nodes'
keras API指出Minimum()为:
计算最小值(按元素计)的输入列表的层。
将所有形状相同的张量列表作为输入, 并返回单个张量(也具有相同的形状)。
所以看来我在正确使用它...但是我可能做的很愚蠢。
答案 0 :(得分:1)
我解决了这个问题。是我的错 我试图将mask传递给minimum(),但是mask是一个numpy数组,minimum()需要Keras Input()