深度学习与PyTorch入门实战 - 48. RNN-Layer使用shape, h.shape) RNN(100, 20, num_layers=4) torch.Size([10, 3, 20]) torch.Size([4, 3, 20]) ### nn.RNNCell ## ___init___ • input_size – The number of expected features in the input x • hidden_size – The Default: 1 ### nn.RNNCell ## - ht = rnncell(xt, ht_1) xt: [b, word vec] - ht_1/ht: [num layers, b, h dim] out = torch.stack([h1, h2, ..., ht]) ## Functional ☐ ☐ ☐ 1 cell1 = nn.RNNCell(100, 20) 2 h1 = Size([3, 20]) ## Functional ## ☀️ ☀️ ☁️ 1 2 3 4 5 6 7 8 9 10 cell1 = nn.RNNCell(100, 30) cell2 = nn.RNNCell(30, 20) h1 = torch.zeros(3, 30) h2 = torch.zeros(3, 20) for xt in x: h1 =0 码力 | 15 页 | 883.60 KB | 2 年前3
【PyTorch深度学习-龙龙老师】-测试版202112。需要注意的是,在 PyTorch 中,RNN 与 RNNCell 的区别在于,带 Cell 的层仅仅是完成了单个时间戳的前向运算,不带 Cell 的层一般是基于 Cell 层实现的,它在内部完成了多个时间戳的循环运算,因此使用起来更为方便快捷。 我们先介绍 RNNCell 的使用方法,再介绍 RNN 层的使用方法。 #### 11.4.1 RNNCell 以某输入特征长度n=4,Cell状态向量特 征长度h=3为例,首先我们新建一个RNNCell,不需要指定序列长度s,代码如下: In [3]: # 创建 RNN Cell,内存向量长度为 3 # 输出特征长度 n=4 cell = nn.RNNCell(4, 3) # 打印内部张量,wxh,whh,b等 for name, p in cell.named_parameters(): print(name, ':', torch.Size([3]) 可以看到,RNNCell 内部维护了 4 个张量,weight_ih 变量即 $ W_{xh} $ 张量,weight_hh 变量即 $ W_{hh} $ 张量,bias_ih 和 bias_hh 变量之和为偏置 b 向量,数学上是等价的,不同的框架有不同的实现。但是 RNN 的 Memory 向量 h 并不由 RNNCell 类维护,需要用户自行初始化向量 $0 码力 | 439 页 | 29.91 MB | 2 年前3
共 2 条
- 1













