python - Pytorch,如何将 CNN 的输出输入到 RNN 的输入中?
问题描述
我是 CNN、RNN 和深度学习的新手。我正在尝试制作将 CNN 和 RNN 结合起来的架构。输入图像大小 = [20,3,48,48] CNN 输出大小 = [20,64,48,48] 现在我希望 cnn 输出为 RNN 输入,但我知道 RNN 的输入必须是 3 维only which is [seq_len, batch, input_size] 如何将 4 维 [20,64,48,48] 张量转换为 RNN 输入的 3 维?
和另一个问题我如何启动第一个隐藏状态
torch.zeros()
我不知道我应该在这个函数中传递什么确切信息。我唯一知道的是
[layer_dim, batch, hidden_dim]
谢谢你。
解决方案
我假设这20
是一个批次的大小。在这种情况下,设置batch = 20
.
seq_len
是每个流中的时间步数。由于在一个时间步输入一张图像,seq_len = 1
.
现在,必须将20
大小的图像(64, 48, 48)
转换为格式
由于输入的大小是 (64, 48, 48),input_size = 64 * 48 * 48
model = nn.LSTM(input_size=64*48*48, hidden_size=1).to(device)
#Generating input - 20 images of size (60, 48, 48)
cnn_out = torch.randn((20, 64, 48, 48)).requires_grad_(True).to(device)
#To pass it to LSTM, input must be of the from (seq_len, batch, input_size)
cnn_out = cnn_out.view(1, 20, 64*48*48)
model(cnn_out)
这会给你结果。
推荐阅读
- php - 从 WooCommerce 中的新订单电子邮件中删除银行帐户详细信息
- wordpress - 如何在 Google Cloud VM 上隐藏 PHPMyAdmin
- python - 如何在每次运行时让 while 循环存储连续变量?
- c# - 在 XML SOAP 请求正文中添加 XML 字符串作为值时出现 XmlException
- arrays - 计算R中3维数组的平均值
- html - 使我的网站能够扩展到移动设备
- python - 通过从用户输入中获取一个键,从 python 中的字典中查找一个值
- oracle - Oracle Apex - 创建按钮,从 CSV 选择文件并将其上传到 APEX 表中,显示在应用程序页面中
- bash - Bash - PWD 未在当前文件夹中执行
- matlab - 连续时间傅里叶级数