接上一篇文章(pytorch实现LSTM),在实现LSTM之后,又发现了GRU网络。
说GRU是LSTM网络的一种效果很好的变体,它较LSTM网络的结构更加简单,而且效果也很好,也是当前非常流形的一种网络。
所以决定尝试一下!
注:数据集仍然使用上文中的IGBT加速老化数据集(3),数据与处理方法不变,直接上代码!!!
在保证输入样本参数和学习率不变的情况下,即input_size = 5,out_oput = 1,lr = 0.01,试了很多参数,发现在训练集80%,测试集20%,hidden_size = 30,使用两个全连接层时结果最好,与上文的LSTM效果接近(代码为CPU版本哦)。
(说好的更简单,效果更好,不明白为啥使用的隐藏层和全连接层要更多了???)
import scipy.io as sio
import numpy as np
import torch
from torch import nn
import matplotlib.pyplot as plt
import matplotlib
import pandas as pd
from torch.autograd import Variable
import math
import csv
# Define LSTM Neural Networks
class GruRNN(nn.Module):
"""
Parameters:
- input_size: feature size
- hidden_size: number of hidden units
- output_size: number of output
- num_layers: layers of LSTM to stack
"""

本文通过代码展示了如何在PyTorch中实现GRU网络,作为LSTM的一个更简洁的变体。尽管GRU结构更简单,但在实验中发现,为了达到与LSTM相近的效果,需要更多的全连接层(2个)。实验使用了80%的数据进行训练,20%用于测试,最佳参数为hidden_size=30。最终,GRU模型在训练集和测试集上的表现接近,并给出了训练过程和预测结果的可视化。
最低0.47元/天 解锁文章
2451





