python - 为什么 Keras 中的 Concatenate Layer 会让训练变得很慢?
问题描述
这实际上来自我之前的问题如何使用 Keras 中的 Conv2D 在 5D 张量的最后三个维度上应用卷积?
我想对batch_size * N * n * n * channel_size
N 中每个 i 的维度进行 2D 卷积。输出预计为batch_size * N * m * m * channel_size2
. 每个 i 的权重应该不同。根据上一个问题的答案,我做了以下事情:
set=[]
for i in range(N):
conv = Conv2D(2,(4,4), strides = (4,4), activation = 'relu') \
(Lambda(lambda x : x[:,i,:,:,:])(input_layer)) # split the tensor and apply the convolution
resh = Reshape((1,4,4,2))(conv) #expand the dimension for concatenation
set.append(resh)
conv_layer = Concatenate(axis = 1)(set)
代码似乎是正确的。但它有以下缺点:
- 模型的总结报告变得相当复杂。它将列出每个 i 的层。
- 即使权重的数量不是很大,网络的训练也会变得非常慢(对于 N = 320)。我不确定这是由于循环中的代码还是由于连接层。
任何建议将不胜感激。
解决方案
推荐阅读
- c# - 如何在没有 WPF 按钮单击的情况下更新线框?
- java - websocket连接上的“Access-Control-Allow-Origin”错误
- javascript - Cordova 未定义 加载后 file:///android_assets/file.html
- react-native - React Native fetch 返回 404 但邮递员执行 200 ok
- c++ - 解释 C++ 中的指针传递?
- c# - 使用 iTextSharp 生成的 pdf 中没有水平滚动条
- c# - 制作对象的整数列表
- python - odoo13中res.partner和res.user是什么关系?
- r - 如何在 Rstudio 中为新会话设置默认工作文件夹?
- node.js - 为什么 child_process.spawn 会阻止父级退出?