赞
踩
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
以上是数据X,y以及一些参数设定,比如特征有2个,输出的类别有3个,隐藏层的维度是5。具体的数据是没有任何意义的,其实对于神经网络而言,他也不知道究竟在学什么声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。