首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ConvLSTM2D层之后添加Conv2D层?

如何在ConvLSTM2D层之后添加Conv2D层?
EN

Stack Overflow用户
提问于 2019-06-24 10:58:03
回答 2查看 619关注 0票数 0

我正在制作一个autoEncoder,用于单目图像的深度估计。第一层是卷积层,第二层是卷积LSTM层。如何在ConvLSTM2D层之后添加Conv2D层。

这是我尝试过的代码,但会出现错误。

代码语言:javascript
复制
autoencoder = Sequential()

autoencoder.add(Conv2D(64, (3, 3),strides = 2 , input_shape = (640, 480, 3), activation = 'linear'))
autoencoder.add(LeakyReLU(alpha = 0.1))

autoencoder.add(ConvLSTM2D(256, (3,3), strides = 2, input_shape = (None, 32), return_sequences = True))

我得到以下错误

ValueError:输入0与conv_gr_u2d_1层不兼容:预期的ndim=5,找到ndim=4

EN

回答 2

Stack Overflow用户

发布于 2019-06-24 13:19:20

您可能误解了ConvLSTM2D的好处。它是为这样的场景而设计的:您有一系列数据,其中每个数据点都是一张图片。因此,电影将是一个典型的用例。

所以,不管你输入什么,它都必须有(batch_size, timesteps, rows, cols, channels)形状。另一方面,Conv2D的输出形状为(batch_size, rows, cols, features)。这就是错误告诉你的。

从技术上讲,您可以在这些层之间添加一个Reshape层,并生成您想要的任何形状,但我不认为这在您的场景中有什么意义。

反之亦然(首先是ConvLSTM2D,然后是Conv2D),这样就更有意义了。但是你需要“类似电影”的输入数据。如果我对你的理解是正确的,你就没有了。

票数 1
EN

Stack Overflow用户

发布于 2019-06-24 12:52:47

Conv2D的输入形状应该是:

代码语言:javascript
复制
input_shape = (batch_size, img_wd, img_hg, channels) 

例:

代码语言:javascript
复制
input_shape = (None, 640, 480, 3)

也不必在input_shape中添加ConvGRU2D参数

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56735123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档