pytorch--分类问题

输出的结果为fail和pass时,称为2分类。

 

 

将函数值映射到[0,1]之间,这样才能符合分类问题。 

 

这是损失函数。

由于结果值只有1和0.当正确值为1时:y'越接近1,logy'越小,损失越小。

当正确值为0:y'越接近0,logy'也越小,损失越小。

老师的图有点误导,实际上是这样的。 

这个.data.numpy是啥?为什么搜不到啊?

 

 

from ast import Return
from operator import itemgetter
from pickletools import optimize
import numpy.matlib
import torch

import numpy as np
import matplotlib.pyplot as plt

x_data=torch.tensor([[1.0],[2.0],[3.0]])
y_data=torch.tensor([[0],[0],[1]])#分类问题--结果为0或1(概率问题)

class Logistic(torch.nn.Module):
    def __init__(self):
        super(Logistic,self).__init__()
        self.linear=torch.nn.Linear(1,1)

    def forward(self,x):  
        y_pred=torch.sigmoid(self.linear(x))
        return y_pred

model=Logistic()

sunshi=torch.nn.BCELoss(size_average=False)#不求均值会影响学习率选取
youhua=torch.optim.SGD(model.parameters(),lr=0.01)

e_l=[]
loss_l=[]
y_data=y_data.to(torch.float32)#这里做了强制转换
for epoch in range(1000):
    y_pred=model(x_data)
    loss=sunshi(y_pred,y_data)#这里出现一个报错,y_data必须是float
    print(epoch,loss.item())
    loss_l.append(loss.item())
    youhua.zero_grad()
    loss.backward()
    youhua.step()
    e_l.append(epoch)


plt.plot(e_l,loss_l)
plt.xlabel("epoch")
plt.ylabel("loss")
plt.show()

 

代码说明:

1、视频中代码F.sigmoid(self.linear(x))会引发warning,此处更改为torch.sigmoid(self.linear(x))

(46条消息) torch.sigmoid()、torch.nn.Sigmoid()和torch.nn.functional.sigmoid()三者之间的区别_沐风大大的博客-CSDN博客_torch.sigmoid

 另外一段不打算打了,是来画出损失函数的图像。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值