首先创建一个mymodel函数,继承torch类
import torch
import torch.nn as nn
class MyModel(nn.Module):
'''要想使用pytorch平台,必须继承nn.model'''
def __init__(self) :
super(MyModel,self).__init__()
#创建两层的神经网络
self.fc1=nn.Linear(3,4)#全连接full connection
self.fc2=nn.Linear(4,2)#输入三个神经元,输出四个神经元
def forward(self,x): #前向传播函数
x=self.fc1(x)
x=torch.tanh(x)#对x进行激活函数对处理
x=self.fc2(x)
return x
然后写训练的文本文件,并开始训练
#训练神经网络的代码
from mymodel import MyModel
import torch
#读取文本文件中的数据,把他们转成torch网络能够使用对数据格式
datafile=open('data.txt','r',encoding='utf-8')
data=list(datafile)
x1=[]
x2=[]
x3=[]
y=[]
for line in data:
line=line.replace('\n','')
val=line.split(',')
x1.append(float(val[0]))
x2.append(float(val[1]))
x3.append(float(val[2]))
y.append(int(val[3]))
#print(x1,x2,x3,y)
x1=torch.tensor(x1)
x2=torch.tensor(x2)
x3=torch.tensor(x3)
y=torch.tensor(y)#变量变成了torch的tensor
x=torch.stack((x1,x2,x3),1)
print(x)
print(y)
#定义一个神经网络模型
model=MyModel()
#创建一个优化算法变量
optimizer=torch.optim.Adam(model.parameters(),lr=0.01)#lr---learning rate <--->eta
#创建损失函数
loss_fn=torch.nn.CrossEntropyLoss()#交叉熵损失
#训练模型
for epoch in range(100):#训练100轮
#前向传播
y_pred=model(x)
#计算损失
loss=loss_fn(y_pred,y)
#反向传播
optimizer.zero_grad()#梯度清零
loss.backward()#损失的反向传播
#更新参数
optimizer.step()#优化器调整权值
print(epoch,loss.item())