Pytorch深度学习实践第十二讲 循环神经网络(基础篇)_1

一、RNN简介

       RNN网络最大的特点就是可以处理序列特征,就是我们的一组动态特征。比如,我们可以通过将前三天每天的特征(是否下雨,是否有太阳等)输入到网络,从而来预测第四天的天气。
       我们可以看RNN的网络结构如下:

二、RNN Cell用法

import torch

batch_size=1#批处理大小
seq_len=3#序列长度,seq_len 表示序列的长度,决定了模型将处理多少个时间步的数据
input_size=4#输入维度
hidden_size=2#隐含层维度,也就是输出维度

cell=torch.nn.RNNCell(input_size=input_size,hidden_size=hidden_size)
#创建一个rnn单元,每次处理一个时间步的数据,对于长度为seq_len的数据,rnncell每次处理一个时间步,通过seq_len次循环,处理完一个序列
dataset=torch.randn(seq_len,batch_size,input_size)
#torch_randn()创建一个指定形状的具有标准正态分布的随机数的张量,seq_len表示序列长度,batch_size表示一次性处理的序列个数,input_size输入数据的维度
print(dataset)
hidden=torch.zeros(batch_size,hidden_size)
#创建h0,torch.zeros创建一个全零的张量,表示初始隐含状态
print(hidden)

for idx,input in enumerate(dataset):
    print(idx)
    print("input size",input.shape)
    hidden=cell(input,hidden)#用于在cell中根据输入和上一隐含层计算下一个隐含层的状态,即是更新hidden
    print("output size",hidden.shape)
    print(hidden)

三、RNN用法

 

#本文件完整代码演示了如何使用多层的 RNN 模型执行一个时间步的前向传播操作,并打印了输出和隐含状态。

import torch

batch_size=1 #批处理数量,一次性处理的序列个数
seq_len=3#序列长度
input_size=4#输入数据的维度
hidden_size=2#隐含层数据维度
num_layers=4#隐含层数量

cell=torch.nn.RNN(input_size=input_size,hidden_size=hidden_size,num_layers=num_layers)
#创建一个多层RNN模型,输出数据维度,隐含层数据维度,rnn模型的层数
inputs=torch.randn(seq_len,batch_size,input_size)
#torch.randn()生成指定形状的随机数张量,seq_len序列的长度,batch_size一次处理的序列数,input_size输入数据的维度

hidden=torch.zeros(num_layers,batch_size,hidden_size)
#初始隐含层,全零张量,模型的层数,一次性处理序列的数量,隐含层的数据维度
out,hidden=cell(inputs,hidden)
#执行rnn单元cell的前向传播操作,得到输出和更新后的隐含状态,只是执行了一个时间步的前向传播操作
#本文件完整代码演示了如何使用多层的 RNN 模型执行一个时间步的前向传播操作,并打印了输出和隐含状态。
print("output_size:",out.shape)
print("output:",out)
print("hidden_size:",hidden.shape)
print("hidden:",hidden)

 batch_first参数:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值