PyTorch 深度学习实践 第6讲

说明:1、 逻辑斯蒂回归和线性模型的明显区别是在线性模型的后面,添加了激活函数(非线性变换)

          2、分布的差异:KL散度,cross-entropy交叉熵

说明:预测与标签越接近,BCE损失越小。

import torch
import matplotlib.pyplot as plt
from torch.autograd.grad_mode import F
#创造数据
x_data=torch.tensor([[1.0],[2.0],[3.0]])
y_data=torch.tensor([[0],[0],[1]]).float()

class Logiesite(torch.nn.Module):
    def __init__(self):
        super(Logiesite,self).__init__()
        self.linear=torch.nn.Linear(1,1)#输入特征一个,输出特征一个,并对参数w,b进行随机初始化
    def forward(self,x):
        y_pre=torch.sigmoid(self.linear(x))#在线性的基础上再加上一层sigmoid,将预测值转换成(0,1)区间上的概率
        return y_pre

logi=Logiesite()

critizion=torch.nn.BCELoss(size_average = False)
option=torch.optim.SGD(logi.parameters(),lr=0.01)
yset=[]
for epoch in range(100):
    y_pre=logi(x_data)#预测
    loss=critizion(y_pre,y_data)#计算损失值
    print(y_pre.data.numpy())
    yset.append(y_pre.data.numpy())
    option.zero_grad()#梯度归零
    loss.backward()#反向传递计算梯度
    option.step()#更新参数
    print("epoch:",epoch," loss:",loss.item())
    print("权重 (w):", logi.linear.weight.item())
    print("偏置 (b):", logi.linear.bias.item())

#预测与绘图
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,10,200)
#这行代码生成了一个包含200个元素的等差数列 x,从0到10之间均匀分布的数据点。这些数据点将被用作输入数据。
x_t=torch.Tensor(x).view(200,1)#对PyTorch张量进行形状变换(reshape)的操作。
# 在这个特定的情境下,它用于将原始的一维张量变换为一个二维张量,其中有200行和1列
y_t=logi(x_t)
#得到预测值
y=y_t.data.numpy()
#将预测值转化为numpy数组,便于进行绘图
plt.plot(x,y)
plt.plot([0,10],[0.5,0.5],c='r')
#(0,10)表示x轴上两个点,(0.5,0.5)表示y轴上两点,都是0.5
#用于绘制一条横跨0-10,纵坐标总是0.5的一条红色直线
plt.xlabel("Hours")
plt.ylabel("Probabily")
plt.grid()#给绘图加上网格,便于观察
plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值