ZBLOG

import numpy as np import pandas as pd import torch from torch import nn,optim import matplotlib.pyplot as plt #解决中文乱码方法 from pylab import mpl mpl.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体 FangSans mpl.rcParams['axes.unicode_minus'] = Fals...

你的代码存在一个小错误,with torch.no_grad: 应该修改为 with torch.no_grad():,在使用上下文管理器时需要加上括号。

这是修改后的代码:

import numpy as np
import pandas as pd
import torch
from torch import nn,optim
import matplotlib.pyplot as plt

#解决中文乱码方法
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体 FangSans
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图片是负号

npx1 = np.random.randint(0,100,(1000,1))
npx2 = np.random.randint(0,100,(1000,1))
npx3 = np.random.randint(0,100,(1000,1))
npx4 = np.random.randint(0,100,(1000,1))

npy = (npx1*2+600)/3-(npx2+npx3)*5 +npx4/3
npxy = np.concatenate((npx1,npx2,npx3,npx4,npy), axis=1)

pdxy = pd.DataFrame(npxy,columns=['x1','x2','x3','x4','y'])
pdxy.to_excel('data.xlsx',index=False)
pdxy.to_csv('data.csv')

pdxyexl=pd.read_excel('data.xlsx')
pdxycsv=pd.read_csv('data.csv')
#print(pdxyexl)
#print(pdxycsv)

data=torch.tensor(pdxyexl.values,dtype=torch.float)
#print(data)

xtrain=data[0:900,:-1]
ytrain=data[0:900,-1:]
xtest=data[900:,:-1]
ytest=data[900:,-1:]
#print(xtest)
class Net(torch.nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = nn.Sequential(
            nn.Linear(4,20),
            nn.ReLU(),
            nn.Linear(20, 10),
            nn.ReLU(),
            nn.Linear(10,5),
            nn.ReLU(),
            nn.Linear(5, 1),
        )

    def forward(self,x):
        x = self.conv1(x)
        return x

device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
model=Net().to(device)
criteon=nn.MSELoss().to(device)
optimizer=optim.Adam(model.parameters(),lr=0.4)
trainlosslist=[]
testlosslist=[]
plt.ion()
for epoch in range(200):
    model.train()
    xtrain=xtrain.to(device)
    ytrain=ytrain.to(device)
    logits=model(xtrain)
    loss=criteon(logits,ytrain)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    trainlosslist.append(loss.item())
    
    model.eval()
    with torch.no_grad():
        xtest = xtest.to(device)
        ytest = ytest.to(device)
        logits = model(xtest)
        testloss=criteon(logits,ytest)
        testlosslist.append(testloss.item())

plt.cla()
l1,=plt.plot(trainlosslist)
l2,=plt.plot(testlosslist)
plt.legend([l1,l2],['tranloss','testloss'],loc='best')
plt.xlabel('epochs')
plt.show()

现在你应该能够顺利运行这段代码了。如果还有其他问题,请随时提问。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=4257

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?