PyTorch深度学习实践-P12循环神经网络

Basic RNN 是神经网络的一种,适用于把一个序列变成另一个序列,例如天气 股市 自然语言处理,使用需要了解1序列数据2循环过程的权重共享机制

  • DNN dense 稠密网络,deep 深网络 有很多线性层
  • x1,x2,x3x4...是数据样本的不同特征
  • 全连接层的运算量很大,相比比之下卷积因为有权重共享计算量小的多

补充python中join()方法 和 end

Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串

语法:

str.join(sequence)

实例:

str = "-"

seq = ("a", "b", "c"); # 字符串序列 print str.join( seq );

输出:

a-b-c

Python end=' '意思是末尾不换行,加空格

RNNs:

  •  h2不仅受到x2的与影响,也受到x1的影响,因此要对他们做一个融合
  • RNN CELL中,常用的激活函数是tanh,因为取值在-1 1 
  • 可以把RNN看成一个线性层

代码:

#最重要的两个参数是input size和hidden size
import torch.nn.RNNCell(input_size=input size,hidden_size=hidden_size)
#实例化RNN CELL
cell=torch.nn.RNNCell(input_size=input size,hidden_size=hidden_size)
#调用,input 当前时刻的输入,加上当前的hidden,得到结果为hidden
hidden=cell(input,hidden)

 

  •  在RNN中,需要注意的是 超参数~

 代码:调用RNNCELL 需要循环,循环长度是序列长度

import torch
#先设置参数
barch_size=1
seq_len=3
input_size=4
hidden_size=2
#构造RNN CELL
cell=torch.nn.RNNCell(input_size=input_size,hidden_size=hidden_size)

#示例 (seq,batch,features)
dataset=torch.randn(seq_len,batch_size,input_size)
#隐层设为全0
hidden=torch.zeros(batch_size,hidden_size)
#训练循环
for idx,input in enumerate(dataset):
    print('='*20,idx,'='*20)
    print('Input size:',input.shape)
    #隐层维度=batch_size*hidden_size
    hidden=cell('output size:',hidden.shape)
    print(hidden)

  • 需要搞清楚维度~多了一个序列维度
#RNN有多少层
cell=torch.nn.RNNCell(input_size=input size,hidden_size=hidden_size,
                        num_layers=num_layers)
#RNN输入inputs整个输入序列x1...xN,hidden 是h0,输入第一个张量outh1...hn,第二个张量hidden是hn
out,hidden=cell(inputs,hidden)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值