keras - 如何在 Conv2D 层之后添加 ConvLSTM2D 层?
问题描述
我正在制作一个用于从单目图像进行深度估计的自动编码器。第一层是卷积层,第二层是卷积 LSTM 层。如何在 Conv2D 层之后添加 ConvLSTM2D 层。
这是我尝试过的代码,但它给出了错误。
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
解决方案
你可能误解了什么ConvLSTM2D
是好的。它专为您拥有一系列数据的场景而设计,其中每个数据点都是一张图片。因此,电影将是一个典型的用例。
所以,无论你喂什么,它都必须有形状(batch_size, timesteps, rows, cols, channels)
。另一方面,Conv2D
输出形状为(batch_size, rows, cols, features)
。这就是错误告诉您的内容。
从技术上讲,您可以Reshape
在它们之间添加一个图层并生成您想要的任何形状,但我看不出这在您的场景中有何意义。
反之亦然(ConvLSTM2D
首先,然后Conv2D
)会更有意义。但是你需要“类似电影”的输入数据。如果我理解正确,你没有那个。
推荐阅读
- android - 如果没有 @Inject 构造函数或 @Provides-annotated 方法,则无法提供 ViewModel
- r - ggplot 使用均值和 se 的置信度
- node.js - 如何在 opencv4nodejs 中将 JSON 描述符转换为 cv.Mat 格式?
- android - 一种将最小化的颤振应用程序带到前台的方法
- javascript - 在循环这个状态和显示道具方面需要帮助
- neo4j - 编写 CYPHER 查询的最佳方式
- java - 整齐地返回轮廓 - OpenCV/Java
- elasticsearch - 如何获取 KIbana 连接的弹性 IP/主机
- python - 使用 Python 将未知的文本文件数据存储到 MySQL
- azure-devops - 如何在 Azure Devops 中使用 msbuild 创建具有发布和调试配置的 nuget 文件