《PyTorch深度学习实践》第七讲 处理多维特征的输入

首先说明一下逻辑回归模型

 

小批量的模型

 定义线性层

 

神经网络内部计算过程

 

代码如下:

'''
利用pytorch构建模型大多可分为四步:
1、准备数据集
2、模型的构造,定义相应的模型
3、构造损失函数和优化器
4、训练循环
'''

import torch                 #导入需要的包
import numpy as np
import matplotlib.pyplot as plt

xy = np.loadtxt('diabetes.csv',delimiter=',',dtype=np.float32)        #np.loadtxt,读取txt,csv文件
x_data = torch.from_numpy(xy[:,:-1])       # 第一个‘:’是指读取所有行,第二个‘:’是指从第一列开始,最后一列不要
y_data = torch.from_numpy(xy[:,[-1]])     # [-1] 最后得到的是个矩阵,避免产生的是一个向量


class Model(torch.nn.Module):                 #构建模型。继承自module
    def __init__(self):                       #构建初始函数
        super(Model, self).__init__()
        self.linear1 = torch.nn.Linear(8,6)     # 输入数据x的特征是8维,x有8个特征,8维降到6维
        self.linear2 = torch.nn.Linear(6,4)
        self.linear3 = torch.nn.Linear(4,1)
        self.sigmoid = torch.nn.Sigmoid()       # 将其看作是网络的一层,而不是简单的函数使用

    def forward(self,x):
         x = self.sigmoid(self.linear1(x))         #加入激活函数
         x = self.sigmoid(self.linear2(x))
         x = self.sigmoid(self.linear3(x))  #y hat
         return x

model = Model()


criterion = torch.nn.BCELoss(reduction='mean')          #定义损失函数和优化器,损失函数使用二分类交叉熵损失,优化随机梯度下降算法
optimizer = torch.optim.SGD(model.parameters(),lr=0.1)

epoch_list = []
loss_list = []

for epoch in range(100):
    y_pred = model(x_data)
    loss = criterion(y_pred,y_data)
    print(epoch,loss.item())
    epoch_list.append(epoch)
    loss_list.append(loss.item())

    optimizer.zero_grad()           #每使用一次loss会构建计算图,梯度会累加,需要清零
    loss.backward()                 #损失的反向传播

    optimizer.step()                  #更新

plt.plot(epoch_list,loss_list)      #绘图
plt.xlabel('epoch')        #选中单词或者句子,点击单引号或者双引号可以快速添加引号
plt.ylabel('loss')
plt.show()

运行输出:

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值