pytorch作业(二)

3,4节一起,课堂代码:

#展示的代码,实现反向传播
import torch

x_data = [1.0, 2.0, 3.0]
y_data = [2.0, 3.0, 4.0]

w = torch.Tensor([1.0])
w.requires_grad = True

#定义forward(x)的计算图谱
def forward(x):
    return x * w
#定义loss方程的计算图谱
def loss(x,y):
    y_pred = forward(x)
    return (y_pred - y) ** 2
print("predict (before training)", 4, forward(4).item())#打印出未训练前,x=4时,预测y的值是多少

#开始训练100次,根据得到的grad改变w的值
train_recon_loss=[]

for epoch in range(100):
    for x, y in zip(x_data, y_data):
        l = loss(x,y)
        l.backward()
        print('\tgrad:', x, y, w.grad.item())
        w.data = w.data - 0.01 * w.grad.data
        
        w.grad.data.zero_()
        
    print("progress:", epoch, l.item())
#打印训练之后对于x=4的预测值
print("predict(after training)", 4, forward(4).item())

'''
#不会画图,后面需要学习
plt.switch_backend('Agg')
#1.训练时先新建个列表,然后将loss值调用列表的append方法存入列表中
#2.例如列表train_recon_loss,Discriminator_loss...,然后将列表名替换train_recon_loss,Discriminator,利用plot即可画出曲线
#3.最后将画的图保存成图片,imgpath为自定义的图片保存路径。
# plt.figure(num = 2, figsize=(640,480))
plt.figure()
plt.plot(train_recon_loss,'b',label = 'Recon_loss')
plt.ylabel('train_recon_loss')
plt.xlabel('iter_num')
plt.legend()
plt.savefig(os.path.join(imgPath,"1_recon_loss.jpg"))

plt.figure()
plt.plot(train_loss_adv,'r',label = 'Discriminator_loss')
plt.ylabel('Discriminator_loss')
plt.xlabel('iter_num')
plt.legend()
plt.savefig(os.path.join(imgPath,"2_train_loss_adv.jpg"))
'''


课后作业代码:

#展示的代码,实现反向传播
import torch

x_data = [1.0, 2.0, 3.0]
y_data = [2.0, 3.0, 4.0]

w = torch.Tensor([1.0])
w.requires_grad = True

#定义forward(x)的计算图谱
def forward(x):
    return x * w
#定义loss方程的计算图谱
def loss(x,y):
    y_pred = forward(x)
    return (y_pred - y) ** 2
print("predict (before training)", 4, forward(4).item())#打印出未训练前,x=4时,预测y的值是多少

#开始训练100次,根据得到的grad改变w的值
train_recon_loss=[]

for epoch in range(100):
    for x, y in zip(x_data, y_data):
        l = loss(x,y)
        l.backward()
        print('\tgrad:', x, y, w.grad.item())
        w.data = w.data - 0.01 * w.grad.data
        
        w.grad.data.zero_()
        
    print("progress:", epoch, l.item())
#打印训练之后对于x=4的预测值
print("predict(after training)", 4, forward(4).item())

'''
#不会画图,后面需要学习
plt.switch_backend('Agg')
#1.训练时先新建个列表,然后将loss值调用列表的append方法存入列表中
#2.例如列表train_recon_loss,Discriminator_loss...,然后将列表名替换train_recon_loss,Discriminator,利用plot即可画出曲线
#3.最后将画的图保存成图片,imgpath为自定义的图片保存路径。
# plt.figure(num = 2, figsize=(640,480))
plt.figure()
plt.plot(train_recon_loss,'b',label = 'Recon_loss')
plt.ylabel('train_recon_loss')
plt.xlabel('iter_num')
plt.legend()
plt.savefig(os.path.join(imgPath,"1_recon_loss.jpg"))

plt.figure()
plt.plot(train_loss_adv,'r',label = 'Discriminator_loss')
plt.ylabel('Discriminator_loss')
plt.xlabel('iter_num')
plt.legend()
plt.savefig(os.path.join(imgPath,"2_train_loss_adv.jpg"))
'''


很怪,目前出现了三个问题:

  1. 已经下载了pytorch,但是只能在anacoda里面切换环境,为什么不能直接在jupyter book里面用?

(突然可以了,已解决,参考这位大佬的找不到 pytorch和matplotlib模块

  1. 不明白为什么,画的图只能在root核心下才能画出来,不知道是不是我的设置有问题

  1. pytorch下画图和python环境下画图有什么区别吗?怎么用呢?

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值