X = torch.arange(1,1001)# Y = 0.7 * X + 100 + torch.randn(X.size())
Y = trend(X,0.3)+ seasonality(X, period=365, amplitude=30)+ noise(X,15)+200
X.shape, Y.shape
(torch.Size([1000]), torch.Size([1000]))
plt.plot(X.numpy(), Y.numpy());
对测试数据进行处理
# 模型的数据的类型需要是32位浮点型
X = X.type(torch.float32)
Y = Y.type(torch.float32)
X.dtype, Y.dtype
(torch.float32, torch.float32)
# 模型的数据需要进行归一化或者标准化,下面是归一化
X =(X - X.min())/(X.max()- X.min())
Y =(Y - Y.min())/(Y.max()- Y.min())
plt.plot(X.numpy(), Y.numpy());
定义模型和模型参数
# 线性模型只有两个参数斜率k,和偏置b# 线性模型的方程为y = k * x + b
k = nn.Parameter(torch.rand(1, dtype=torch.float32))
b = nn.Parameter(torch.rand(1, dtype=torch.float32))# 下面输出中的requires_grad=True 表示该参数需要计算梯度# 梯度用于在反向传播中对参数进行优化,优化方法即梯度下降
k, b
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…