🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎
📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
📣系列专栏 - 机器学习【ML】 自然语言处理【NLP】 深度学习【DL】
🖍foreword
✔说明⇢本人讲解主要包括Python、机器学习(ML)、深度学习(DL)、自然语言处理(NLP)等内容。
如果你对这个系列感兴趣的话,可以关注订阅哟👋
线性回归代码实现
-
import torch
-
import torch.nn
as nn
-
import numpy
as np
-
import matplotlib.pyplot
as plt
-
-
-
# 超参数
-
input_
size
=
1
-
output_
size
=
1
-
num_epochs
=
60
-
learning_rate
=
0.001
-
-
# 数据集
-
x_train
= np.array([[
3.3], [
4.4], [
5.5], [
6.71], [
6.93], [
4.168],
-
[
9.779], [
6.182], [
7.59], [
2.167], [
7.042],
-
[
10.791], [
5.313], [
7.997], [
3.1]], dtype
=np.float
32)
-
-
y_train
= np.array([[
1.7], [
2.76], [
2.09], [
3.19], [
1.694], [
1.573],
-
[
3.366], [
2.596], [
2.53], [
1.221], [
2.827],
-
[
3.465], [
1.65], [
2.904], [
1.3]], dtype
=np.float
32)
-
-
# 线性回归模型
-
model
= nn.Linear(
input_
size,
output_
size)
-
-
# 损失和优化器
-
criterion
= nn.MSELoss()
-
optimizer
= torch.optim.SGD(model.parameters(), lr
=learning_rate)
-
-
# 训练模型
-
for epoch
in range(num_epochs):
-
# Convert numpy arrays
to torch tensors
-
inputs
= torch.
from_numpy(x_train)
-
targets
= torch.
from_numpy(y_train)
-
-
# 前向传播
-
outputs
= model(inputs)
-
loss
= criterion(outputs, targets)
-
-
# 向后优化
-
optimizer.
zero_grad()
-
loss.backward()
-
optimizer.step()
-
-
if (epoch
+
1) %
5
=
=
0:
-
print (
'Epoch [{}/{}], Loss: {:.4f}'.
format(epoch
+
1, num_epochs, loss.item()))
-
-
# 绘制图形
-
predicted
= model(torch.
from_numpy(x_train)).detach().numpy()
-
plt.plot(x_train, y_train,
'ro', label
=
'Original data')
-
plt.plot(x_train, predicted, label
=
'Fitted line')
-
plt.legend()
-
plt.show()
-
-
# 保存模型
-
torch.save(model.state_dict(),
'model.ckpt')