python - 如何在 Keras python 中使用 ConvLSTM2D 和 Conv2D
问题描述
我正在尝试在 Keras 中使用以下模型,其中ConvLSTM2D
输出之后是 Conv2D
生成类似分段的输出。输入和输出应该是(2*WINDOW_H+1, 2*WINDOW_W+1)
每个大小的时间序列
model = Sequential()
model.add(ConvLSTM2D(3, kernel_size=3, padding = "same", batch_input_shape=(1, None, 2*WINDOW_H+1, 2*WINDOW_W+1, 1), return_sequences=True, stateful=True))
model.add(Conv2D(1, kernel_size=3, padding = "same"))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.summary()
但是,这会产生以下错误(添加 Conv2D 时):
Input 0 is incompatible with layer conv2d_1: expected ndim=4, found ndim=5
任何关于我可能错的地方的指示都非常感谢。谢谢!
解决方案
我认为你需要做一个时间分布的 Conv2D 层,以便尺寸匹配。可能像这样:
model = Sequential()
model.add(ConvLSTM2D(3, kernel_size=3, padding = "same", batch_input_shape=(1, None, 2*WINDOW_H+1, 2*WINDOW_W+1, 1), return_sequences=True, stateful=True))
model.add(TimeDistributed((Conv2D(1, kernel_size=3, padding = "same")))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.summary()
推荐阅读
- matlab - 尽管在我的脚本中以这种方式指定它,但似乎无法强制 y 轴不采用指数表示法。X轴工作正常
- python - Python:pd.DateOffset 导致重复索引
- javascript - 如何阻止部分刷新在 Wordpress Customizer 实时预览中删除分节符?
- python - Python Pandas 列按计数排序
- coq - Coq:展开棘手的符号
- ruby-on-rails - 控制器实例变量不在 JS 视图中呈现
- c# - 如何在 C# WPF 中完美停止 DispatcherTimer
- html - 对父文件夹中的文件执行 href 时出现“无法获取”错误
- pandas-groupby - 如何在进行 groupby 的同时做平均值和最大值?
- python - 使用两个递归函数而不是一个递归和一个迭代进行合并排序