震惊!用PyTorch搭建神经网络竟然如此简单
公众号后台回复“111”
领取本篇代码、基因集或示例数据等文件
文件编号:24314
需要租赁服务器的小伙伴可以扫码添加小果,此外小果还提供生信分析,思路设计,文献复现等,有需要的小伙伴欢迎来撩~
import csv#csv文件处理模块
from torch import tensor,nn#分别导入转化张量的函数和神经网络模块
from torch.optim import SGD#导入optim优化器模块的SGD算法
import matplotlib.pyplot as plt#导入绘图模块
#1.数据集预处理
x_dataset,y_dataset=[],[]
with open('data/abalone/abalone.data', newline='') as file:
dataset = csv.reader(file, delimiter=',')
for row in dataset:
x_dataset.append(float(row[4]))
y_dataset.append(float(row[-2]))
x=tensor(x_dataset).view(-1,1)
y=tensor(y_dataset).view(-1,1)
#2.定义模型
class MyLinear(nn.Module):
def __init__(self):
super(MyLinear,self).__init__()
self.linear=nn.Linear(1,1)
def forward(self,x):
out=self.linear(x)
return out
#3.模型、优化器、loss实例化
my_linear=MyLinear()
optimizer=SGD(my_linear.parameters(),lr=0.001)
loss_fn=nn.MSELoss(),
#4.循环,进行梯度下降,更新参数
for i in range(5000):
y_predict=my_linear(x)
loss=loss_fn(y_predict,y)
optimizer.zero_grad()#梯度置为0
loss.backward()#反向传播
optimizer.step()#参数更新
if i%100==0:
params=list(my_linear.parameters())
print(f'loss={loss.item()} w、b={params[0].item(),params[1].item()}')
#4.查看模型训练结果
plt.rcParams['font.sans-serif']=['SimHei']#黑体,显示中文
plt.rcParams['axes.unicode_minus'] = False#运行配置参数总的轴(axes)正常显示正负号
plt.title('线性回归模型')
plt.xlabel('整体重量')
plt.ylabel('壳重')
plt.scatter(x.numpy().reshape(-1),y.numpy().reshape(-1))
plt.plot(x.numpy().reshape(-1),y_predict.detach().numpy().reshape(-1),c='r')
plt.savefig('output/result.png')
plt.show()
小果还提供思路设计、定制生信分析、文献思路复现;有需要的小伙伴欢迎直接扫码咨询小果,竭诚为您的科研助力!
定制生信分析
服务器租赁
扫码咨询小果
往期回顾
01 |
02 |
03 |
04 |