Code-人工智能¶
人工智能 #深度学习 #机器学习 #python¶
深度学习¶
Pytorch基础训练¶
import torch
import torch.nn as nn
# 定义一个简单的神经网络模型
class NeuralNetwork(nn.Module):
def __init__(self):
super(NeuralNetwork, self).__init__()
self.linear = nn.Linear(2, 1) # 输入维度为2,输出维度为1
def forward(self, x):
return self.linear(x) # 线性映射
# 创建一个输入张量
x = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
# 创建神经网络模型实例
model = NeuralNetwork()
# 创建一个目标张量
target = torch.tensor([[0.0], [1.0]])
# 定义损失函数
loss_fn = nn.MSELoss() # 均方误差
# 定义优化器
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
# 进行训练
for epoch in range(100):
# 清零模型的梯度
optimizer.zero_grad()
# 进行前向传播
output = model(x)
# 计算损失
loss = loss_fn(output, target)
# 进行反向传播
loss.backward()
# 更新模型参数
optimizer.step()
# 每隔10个epoch打印一次训练信息
if (epoch+1) % 10 == 0:
print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, 100, loss.item()))
这段训练代码会进行100个epoch的训练,并打印每个epoch的损失值。在训练过程中,首先清零模型的梯度,然后进行前向传播和损失计算,接着进行反向传播和参数更新,最后打印训练信息。
# 使用训练好的模型进行预测
predicted = model(x).detach()
# 打印预测值
print(f'predicted: \n{predicted}')
print(f'target: \n{target}')
为这个结果绘图
import matplotlib.pyplot as plt
import numpy as np
# 转为numpy格式
predicted = predicted.numpy()
target = target.numpy()
# 创建一个新的图形
plt.figure()
# 绘制预测值和目标值的图表
plt.plot(predicted,label = 'line predicted')
plt.plot(target,label = 'line target')
plt.legend(loc = 'upper left')
plt.show()
如何使用matplotlib,参见Python-matplotlib画图