震惊!用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()#梯度置为0loss.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 |