PyTorch 深度学习实践 第7讲

1、乘的权重(w)都一样,加的偏置(b)也一样。b变成矩阵时使用广播机制。神经网络的参数w和b是网络需要学习的,其他是已知的。

          2、学习能力越强,有可能会把输入样本中噪声的规律也学到。

         3、该神经网络共3层;第一层是8维到6维的非线性空间变换,第二层是6维到4维的非线性空间变换,第三层是4维到1维的非线性空间变换。

         4、本算法中torch.nn.Sigmoid() # 将其看作是网络的一层,而不是简单的函数使用 

 

import numpy as np
import torch
import matplotlib.pyplot as plt
xy=np.loadtxt("diabetes.csv",delimiter=",",dtype=np.float32)
#加载数据,其中第一个参数表示文件名(注意路径)。第二个参数表示分隔符,第三个参数表示数据类型

x_data=torch.from_numpy((xy[:,:-1]))
#表示x_data来自于第一列到不取最后一列
y_data=torch.from_numpy(xy[:,[-1]])
#表示y_data来自于最后一列,注意最后一列需要加【】,表明是个矩阵

#模型
class DuoweiModel(torch.nn.Module):
    def __init__(self):
        super(DuoweiModel,self).__init__()
        self.linear1=torch.nn.Linear(8,6)#8维输入变成6维输出
        self.linear2=torch.nn.Linear(6,4)#6维输入变为4维输出
        self.linear3=torch.nn.Linear(4,1)#4维输入变为1维输出
        self.sigmoid=torch.nn.Sigmoid()#加上逻辑斯特变换

    def forward(self,x):#预测
        #上一层输出作为下一层输入,并且每一层都使用了sigmoid函数
        x=self.sigmoid(self.linear1(x))
        x=self.sigmoid(self.linear2(x))
        x=self.sigmoid(self.linear3(x))
        return x

duomodel=DuoweiModel()#实例化模型
criterion=torch.nn.BCELoss(reduction="mean")#定义损失函数
optimizer=torch.optim.SGD(duomodel.parameters(),lr=0.01)#定义优化器

epoch_list=[]#记录轮次
loss_list=[]#记录损失值

for epoch in range(10000):
    y_pre=duomodel(x_data)#得到预测值
    loss=criterion(y_pre,y_data)#计算损失值
    epoch_list.append(epoch)#记录epoch
    loss_list.append(loss)#记录损失值

    optimizer.zero_grad()#梯度清零
    loss.backward()#反向传递计算梯度
    optimizer.step()#梯度更新

plt.plot(epoch_list,loss_list)
plt.xlabel("epoch")
plt.ylabel("loss")
plt.grid()
plt.show()


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值