RNN的前向传播函数

 

程序:

import torch as t
from torch import nn
from torch.autograd import Variable as V

t.manual_seed(1000)

# 输入 batch_size=3,序列长度都为2,序列中每个元素占4维

input=V(t.randn(2,3,4))
print(input)

# lstm 输入向量4维,3个隐藏元,1层

lstm=nn.LSTM(4,3,1)

# 初始状态:1层,batch_size=3,3个隐层元

h0=V(t.randn(1,3,3))
c0=V(t.randn(1,3,3))

out,(hn,cn)=lstm((input,h0),c0)
out,(hn,cn)=lstm(input,(h0,c0))
print(out)
print("hn=\n",hn)
print("cn=\n",cn)

out,hn=lstm(input,(h0,c0))
print(out)
print("hn=\n",hn)

 

这样写,out,(hn,cn)=lstm((input,h0),c0) 会报错:

/home/wangbin/anaconda3/envs/deep_learning/bin/python3.7 /home/wangbin/anaconda3/envs/deep_learning/project/main.py
Traceback (most recent call last):
  File "/home/wangbin/anaconda3/envs/deep_learning/project/main.py", line 21, in 
    out,(hn,cn)=lstm((input

你可能感兴趣的:(深度学习&机器学习,RNN)