【问题标题】:Deconvolution under Keras issuesKeras问题下的反卷积
【发布时间】:2017-01-13 17:17:29
【问题描述】:

我正在尝试将 keras 的 Deconvolution2D 与 Tensorflow 后端一起使用。

但我遇到了一些问题。 首先,在 output_shape 中,如果我为 batch_size 传递 None,我会收到此错误:

TypeError: Expected binary or unicode string, got None

如果我通过我使用的批量大小更改 None,这是错误..:

InvalidArgumentError (see above for traceback): Conv2DCustomBackpropInput: input and out_backprop must have the same batch size
 [[Node: conv2d_transpose = Conv2DBackpropInput[T=DT_FLOAT, data_format="NHWC", padding="VALID", strides=[1, 2, 2, 1], use_cudnn_on_gpu=true, _device="/job:localhost/replica:0/task:0/cpu:0"](conv2d_transpose/output_shape, transpose, Reshape_4)]]

这是我使用的模型:

model = Sequential()

reg = lambda: l1l2(l1=1e-7, l2=1e-7)
h = 5
model.add(Dense(input_dim=100, output_dim=nch * 4 * 4, W_regularizer=reg()))
model.add(BatchNormalization(mode=0))
model.add(Reshape((4, 4, nch)))
model.add(Deconvolution2D(256, h,h, output_shape=(128,8,8,256 ), subsample=(2,2), border_mode='same'))
model.add(BatchNormalization(mode=0, axis=1))
model.add(LeakyReLU(0.2))
model.add(Deconvolution2D(256, h,h, output_shape=(128,16,16,256 ), subsample=(2,2), border_mode='same'))
model.add(BatchNormalization(mode=0, axis=1))
model.add(LeakyReLU(0.2))
model.add(Deconvolution2D(64, h,h, output_shape=(128,32,32,64), subsample=(2,2), border_mode='same'))
model.add(BatchNormalization(mode=0, axis=1))
model.add(LeakyReLU(0.2))
model.add(Convolution2D(3, h, h, border_mode='same', W_regularizer=reg()))
model.add(Activation('sigmoid'))
model.summary()

【问题讨论】:

  • 为什么要将batch_size设置为None?
  • @MarcinMożejko :因为在 Keras 中,None 意味着可变批量大小。 (就像 Tensorflow 中的 -1)

标签: tensorflow neural-network deep-learning keras


【解决方案1】:

这是 Keras 以前版本中反卷积的一个烦恼,总是必须给出固定的批量大小并手动计算 output_shape。这也意味着您的数据集大小必须能被“batch_size”整除,否则会在最后一个(较小的)批次上引发错误。

幸运的是,这已在 Keras 2.0 中得到修复。 Deconvolution2D 已被 Conv2DTranspose 取代,您甚至不必再将 output_shape 作为参数:

    model.add(Conv2DTranspose(filters=256, kernel_size=(h,h), strides=(2,2), padding='same'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    相关资源
    最近更新 更多