网站建设费用明细表,大连网站制作学校,网站制作难点,我是做网站怎么赚钱一、RNN简介
1、RNN网络最大的特点就是可以处理序列特征#xff0c;就是我们的一组动态特征。比如#xff0c;我们可以通过将前三天每天的特征#xff08;是否下雨#xff0c;是否有太阳等#xff09;输入到网络#xff0c;从而来预测第四天的天气。 我们可以看RN…一、RNN简介
1、RNN网络最大的特点就是可以处理序列特征就是我们的一组动态特征。比如我们可以通过将前三天每天的特征是否下雨是否有太阳等输入到网络从而来预测第四天的天气。 我们可以看RNN的网络结构如下 二、RNN cell用法 import torchbatch_size 1 # 批处理大小
seq_len 3 # 序列长度
input_size 4 # 输入维度
hidden_size 2 # 隐藏层维度cell torch.nn.RNNCell(input_sizeinput_size, hidden_sizehidden_size)# (seq, batch, features)
dataset torch.randn(seq_len, batch_size, input_size)
print(dataset)
hidden torch.zeros(batch_size, hidden_size)
print(hidden)for idx, input in enumerate(dataset):print( * 20, idx, * 20)print( Input size: , input.shape)hidden cell(input, hidden)print( outputs size: , hidden.shape)print(hidden)三、RNN用法 import torchbatch_size 1 # 批处理大小
seq_len 3 # 序列长度
input_size 4 # 输入维度
hidden_size 2 # 隐藏层维度
num_layers 4 # 隐藏层数量cell torch.nn.RNN(input_sizeinput_size, hidden_sizehidden_size, num_layersnum_layers)# (seqLen, batchSize, inputSize)
inputs torch.randn(seq_len, batch_size, input_size)
hidden torch.zeros(num_layers, batch_size, hidden_size)
out, hidden cell(inputs, hidden)print( Output size:, out.shape)
print( Output:, out)
print( Hidden size: , hidden.shape)
print( Hidden: , hidden)四、Embedding
把input变为稠密的数据 代码
import torch# parameters
num_class 4
input_size 4
hidden_size 8
embedding_size 10
num_layers 2
batch_size 1
seq_len 5# 准备数据集
idx2char [e, h, l, o]
x_data [[1, 0, 2, 2, 3]] # (batch, seq_len)
y_data [3, 1, 2, 3, 2] # (batch * seq_len)inputs torch.LongTensor(x_data) # Input should be LongTensor: (batchSize, seqLen)
labels torch.LongTensor(y_data) # Target should be LongTensor: (batchSize * seqLen)# 构建模型
class Model(torch.nn.Module):def __init__(self):super(Model, self).__init__()self.emb torch.nn.Embedding(input_size, embedding_size)self.rnn torch.nn.RNN(input_sizeembedding_size, hidden_sizehidden_size, num_layersnum_layers, batch_firstTrue)self.fc torch.nn.Linear(hidden_size, num_class)def forward(self, x):hidden torch.zeros(num_layers, x.size(0), hidden_size)x self.emb(x) # (batch, seqLen, embeddingSize)x, _ self.rnn(x, hidden) # 输出(, , hidden_size)x self.fc(x) # 输出(, , )return x.view(-1, num_class) # reshape to use Cross Entropy: (×, )net Model()# 损失函数和优化器
criterion torch.nn.CrossEntropyLoss()
optimizer torch.optim.Adam(net.parameters(), lr0.05)# 训练模型
for epoch in range(15):optimizer.zero_grad()outputs net(inputs)loss criterion(outputs, labels)loss.backward()optimizer.step()_, idx outputs.max(dim1)idx idx.data.numpy()print(Predicted: , .join([idx2char[x] for x in idx]), end)print(, Epoch [%d/15] loss %.3f % (epoch 1, loss.item()))运行结果