pytorch多层神经网络

import numpy as np
import torch
from torch import nn
#delimiter指定读取文件中数据的分割符 文件中的分割符是空格 就用空格
xy = np.loadtxt('C:\\Users\\liuqian\\Desktop\\date\\diabetes.csv.gz',delimiter=',',dtype=np.float32)
x_data = torch.from_numpy(xy[:,:-1]) #这里本来就是矩阵 
y_data = torch.from_numpy(xy[:, [-1]])# 这里是提取最后1维的数据,如果加上【】那么就是矩阵,不加就是向量

搭建多层网络的时候,就是利用矩阵的变换,比如,我们矩阵能将8维的向量变成1维输出,也可以变成3维的向量输出

  • M ∗ N = [ M × a ] ∗ [ a × N ] M*N=[M\times a]*[a\times N] MN=[M×a][a×N]

在这里插入图片描述

class Model(torch.nn.Module):
    def __init__(self):
        super(Model,self).__init__()
        self.linear1 = torch.nn.Linear(8,6)
        self.linear2 = torch.nn.Linear(6,4)
        self.linear3 = torch.nn.Linear(4,1)#搭建一下每一层的线性结构
        self.s = torch.nn.Sigmoid()    #这里的Sigmoid是一个模块
        
    def forward(self,x):
        x = self.s(self.linear1(x))      #用每一层的线性结构进行非线性输出
        x = self.s(self.linear2(x))      # !!!!这里不能用 self.sigmoid命名 会发生冲突报错 
        x = self.s(self.linear3(x))     
        return x

model = Model()    #实例化一个模型
criterion = torch.nn.BCELoss(reduction = 'sum')    #创建损失函数实例
optimizer = torch.optim.SGD(model.parameters(),lr=0.001)  #创建优化器实例 model.parameters()方法会把model中所有需要优化的参数找出来
for epoch in range(1500):
    #Forward
    y_pred = model(x_data)  #model内部有用call函数的类,所以可以直接调用实例对象  
                            #(这里是把所有的数据都扔进来了,并没有进行mini-batch运算)
    loss = criterion(y_pred,y_data) #构造损失函数实例
    print(epoch,loss.item())   # 去掉格式,直接输出数据
    
    #Backward
    optimizer.zero_grad()#将梯度置零 如果不删除相当于batch的累加,每次求的梯度就会累加,比如上一次计算的梯度
                         #为a,那么下一次的梯度就是a+b(b是下一次的梯度,但是最终的结果会累加)
    loss.backward()   #计算当前loss对权重的梯度
    
    #Update
    optimizer.step()
    # 结果为什么不收敛 而且loss很大?  之前的reduction设定的是所有样本的误差
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用PyTorch构建多层神经网络时,可以按照以下步骤进行: 1. 数据的准备:首先,需要准备好用于训练和测试的数据。可以使用torch.Tensor()将数据转化为张量,同时根据需求使用torch.LongTensor()构造长整型张量。 2. 构建模型:接下来,需要定义神经网络的结构。可以使用torch.nn中的各种层,如全连接层、卷积层等来构建多层神经网络。可以根据需要自定义网络的结构。 3. 定义损失函数:根据多分类问题的需求,可以选择使用交叉熵损失函数(torch.nn.CrossEntropyLoss()),该损失函数已经包含了softmax激活函数。 4. 定义优化器:选择合适的优化器,如随机梯度下降(SGD)、Adam等,用于更新网络的参数。 5. 训练网络:使用训练数据对网络进行训练。通过计算损失函数并反向传播,更新网络的参数以使损失函数最小化。 6. 测试网络:使用测试数据对训练好的网络进行测试,评估网络的性能。 综上所述,可以根据需求按照以上步骤构建多层神经网络,并使用PyTorch提供的函数和工具进行训练和测试。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [pytorch搭建CNN+LSTM+Attention网络实现行车速度预测项目代码加数据](https://download.csdn.net/download/2301_79009758/88247134)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [pytorch搭建多层神经网络解决多分类问题(采用MNIST数据集)](https://blog.csdn.net/gary101818/article/details/122430644)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值