首页 > 解决方案 > 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]

谢谢你。

标签: pythonpytorchconv-neural-networklstmrecurrent-neural-network

解决方案


我假设这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)

这会给你结果。


推荐阅读