我想使用 keras 层Flatten()
或Reshape((-1,))
在模型的末尾输出一维向量,例如[0,0,1,0,0, ... ,0,0,1,0]
.
可悲的是,由于我未知的输入形状存在问题,即:
input_shape=(4, None, 1)))
.
因此,通常输入形状介于两者之间[batch_size, 4, 64, 1]
,[batch_size, 4, 256, 1]
输出应该是batch_size x 未知维度(对于上面的第一个示例:[batch_size, 64]
和第二个[batch_size, 256]
)。
我的模型看起来像:
model = Sequential()
model.add(Convolution2D(32, (4, 32), padding='same', input_shape=(4, None, 1)))
model.add(BatchNormalization())
model.add(LeakyReLU())
model.add(Convolution2D(1, (1, 2), strides=(4, 1), padding='same'))
model.add(Activation('sigmoid'))
# model.add(Reshape((-1,))) produces the error
# int() argument must be a string, a bytes-like object or a number, not 'NoneType'
model.compile(loss='binary_crossentropy', optimizer='adadelta')
所以我当前的输出形状是[batchsize, 1, unknown dimension, 1]。例如,这不允许我使用 class_weights "ValueError: class_weight not supported for 3+ dimensional targets."
。
当我使用灵活的输入形状时,是否可以在 keras(带有 tensorflow 后端的 2.0.4)中使用类似Flatten()
或扁平化我的 3 维输出?Reshape((1,))
非常感谢!