我想在模型末尾使用keras层Flatten()
或{[0,0,1,0,0, ... ,0,0,1,0]
。在
不幸的是,有一个问题,因为我的未知输入形状是:input_shape=(4, None, 1)))
。在
因此,通常输入形状介于[batch_size, 4, 64, 1]
和[batch_size, 4, 256, 1]
之间,输出应该是批处理大小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,未知维度,1]。
这不允许我使用类权重,例如"ValueError: class_weight not supported for 3+ dimensional targets."
。在
当我使用灵活的输入形状时,是否可以使用Flatten()
或{
非常感谢!在
您可以尝试
K.batch_flatten()
包装在Lambda
层中。K.batch_flatten()
的输出形状在运行时动态确定。在相关问题 更多 >
编程相关推荐