在本文章中,我们将使用PyTorch
从头开始实现一个简单的神经网络。
注:阅读本文之前,最好可以了解神经网络的工作原理。
虽然有很多库可以用于深度学习,但我最喜欢 PyTorch
。作为一名python
程序员,我喜欢 PyTorch
的 python
行为是原因之一。它主要使用了python
的风格和能力,这是很容易理解和使用。
在其核心,PyTorch
提供两个主要特性:
-
一个类似于
numpy
的n
维张量,但可以在gpu
上运行; -
自动区分建立和训练神经网络。
什么是神经网络?
神经网络是一组可以模仿人类大脑,并被设计用来识别模式的算法。这些网络是由接近神经元的单个部分构成的,通常称为单元或简称为“神经元”每个单元有一定数量的加权输入。这些加权的输入总和在一起(一个线性组合) ,然后通过一个激活函数来得到单位输出。
神经网络中的节点类型:
-
输入单元ーー把外界的资讯输入网络,统称为「输入层」。这些节点不执行任何计算,它们只是将信息传递给隐藏节点;
-
隐藏单元ーー这些节点与外界没有任何直接联系。它们执行计算并将信息从 Input 节点传输到
Output
节点。一个隐藏节点的集合形成了一个“隐藏层”。虽然前馈网络只有一个输入层和一个输出层,但是它可以有零个或多个隐藏层; -
输出单元ーー输出节点统称为「输出层」 ,负责计算及将网络上的资讯传送到外界。
每一层包含一个或多个节点。
码字不易废话两句:有需要python学习资料的或者有技术问题交流 “点击”即可
建立神经网络
PyTorch
提供了一个模块 nn
,使得构建网络更加简单。我们将看到如何建立一个有784个输入,256个隐藏单元,10个输出单元和一个softmax
输出单元的神经网络。
from torch import nnclass Network(nn.Module):
def __init__(self):
super().__init__()
# Inputs to hidden layer linear transformation
self.hidden = nn.Linear(784, 256)
# Output layer, 10 units - one for each digit
self.output = nn.Linear(256, 10)
# Define sigmoid activation and softmax output
self.sigmoid = nn.Sigmoid(</