gpt4 book ai didi

python - 将 keras.backend.conv2d 从 Keras 1.x 迁移到 2.x

转载 作者:太空宇宙 更新时间:2023-11-03 14:42:46 26 4
gpt4 key购买 nike

我正在将项目从 Keras 1.x 迁移到 2.x。

在代码中,keras.backend.conv2d在 1.x 中运行良好的操作现在在 2.x 中崩溃了。

convs = K.conv2d(a, b, padding='valid', data_format='channels_first')

输入张量形状 ab 均为 (1024, 4, 1, 1),输出张量形状为 ( 1024, 1024, 1, 1) 在 1.x 中。

在 2.x 中,我收到以下错误:

ValueError: CorrMM: impossible output shape
bottom shape: 1024 x 4 x 1 x 1
weights shape: 1 x 1 x 1024 x 4
top shape: 1024 x 1 x -1022 x -2

Apply node that caused the error: CorrMM{valid, (1, 1), (1, 1), 1 False}(Print{message='a', attrs=('__str__',), global_fn=<function DEBUG_printTensorShape at 0x00000272EF1FAD08>}.0, Subtensor{::, ::, ::int64, ::int64}.0)
Toposort index: 30
Inputs types: [TensorType(float32, (False, False, True, True)), TensorType(float32, (True, True, False, False))]
Inputs shapes: [(1024, 4, 1, 1), (1, 1, 1024, 4)]

我正在使用 Theano 后端,并在 K.set_image_data_formatconv2d 中设置 channels_first

最佳答案

conv2D方法中,a是实际图像,b是内核。

<小时/>

a 的预期形状是(带有“channels_first”):

(batchSize, channels, side1, side2)

所以,您的输入是:

  • 1024 张图片
  • 4 个 channel
  • 图像 1 x 1
<小时/>

但是,尽管使用 'channels_last'b 的预期形状是:

(side1,side2, inputChannels,outputChannels)

这似乎有点误导,因为在过滤器中,它仍然是最后一个 channel 。 (在我的keras上测试,版本2.0.4)

因此,如果您的输出是 (1024,1024,1,1),我假设 b 应该有 1024 个输出过滤器,因此它的形状应为:

(1,1,4,1024)

您可能应该使用某种方法来排列尺寸,而不仅仅是 reshape 形状。 Numpy 有 swapaxes,keras 有 K.permute_dimensions

关于python - 将 keras.backend.conv2d 从 Keras 1.x 迁移到 2.x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46471133/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com