当前位置:   article > 正文

Pytorch神经网络入门(1)参数的手动更新和自动更新_torch中按照给定的梯度进行更新

torch中按照给定的梯度进行更新

Pytorch 作为深度学习届两大扛把子框架之一(另一个是Tensorflow),一直都受着AI炼丹师们的喜爱。这里将简单介绍一下神经网络参数的手动更新和自动更新。

首先来说手动更新,可能很多初学者随便打开一本pytorch书或者教程,发现他们的梯度更新方式都大同小异,都是那几句话,但他其中的具体步骤究竟是怎样的,还是有必要了解一下。

在这里插入图片描述
一般情况下,神经网络都是有隐藏层的,当然也可以像上图左边那样,只有输入输出。

神经网络的循环过程

如下:
1,输入进来,前向传播,先用初始化的矩阵将输入转换成和输出类似的形式。
2, 然后计算Loss,也就是计算预测的结果和实际结果差了多少。
3,根据这个Loss反向传播,获取不同矩阵的梯度
4,根据获取的梯度,更新梯度。

整个流程大致就是一个epoch,在实际场景的神经网络训练中,这样的循环可能都是成百万次,千万次级别的。当然,初学的时候用不到这么多。

手动更新

来看代码:

import torch
import numpy as np
x_data = np.array(
    [[0, 0], [1, 0], [1, 1], [0, 0], [0, 0], [0, 1]])
x_data_torch = torch.from_numpy(x_data).float() 

y_data = np.array([0,1,2,0,0,2])
y_data_torch = torch.from_numpy(y_data)

num_features = 2
num_classes = 3
n_hidden_1 = 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

以上是数据X,y以及一些参数设定,比如特征有2个,输出的类别有3个,隐藏层的维度是5。具体的数据是没有任何意义的,其实对于神经网络而言,他也不知道究竟在学什么声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】

推荐阅读
相关标签