一一中文网

手机浏览器扫描二维码访问

第60章 第一个模型(第1页)

深夜十一点,狭窄的书房里,只有书桌上的屏幕还亮着。

林晨盯着pytorch官方教程的最后一个章节,已经看了三遍。

屏幕上是一个完整的神经网络代码示例——mNISt手写数字识别,深度学习界的“helloworld”

。

过去两周,他像海绵一样吸收着那些抽象的概念:张量、梯度、反向传播、损失函数。

数学补课起了作用,至少现在看到矩阵乘法不再发怵,能理解为什么权重更新要用链式法则。

但理解归理解,距离“亲手创造一个能思考的东西”

,还隔着一段需要代码去填补的距离。

“跟着做一遍”

。

他对自己说,声音在安静的房间里显得格外清晰。

新建python文件,导入torch和torchvision。

下载mNISt数据集——一个包含六万张28x28像素手写数字图片的经典数据集。

代码跑起来,终端开始显示下载进度。

林晨看着那些滚动的日志,忽然有些恍惚。

三十五岁,再次失业1个月,存款以每月两万多的速度消耗,自己却在这里下载一堆黑白数字图片。

这个场景如果拍下来给一年前的自己看,恐怕会觉得是个荒诞的玩笑。

但数据下载完成的提示音把他拉回现实。

接下来是数据预处理:将图片像素值从0-255归一化到0-1之间,转换成pytorch能处理的tensor格式,分割成训练集和测试集。

这些步骤他已经在JupyterNotebook里练习过多次,手指在键盘上敲击得流畅。

真正的挑战从定义模型开始。

教程提供了一个简单的全连接神经网络:输入层784个节点(28x28),两个隐藏层各128个节点,输出层10个节点(对应数字0-9)。

结构图在屏幕上展开,林晨逐行敲入代码。

classNet(nn.module):

def__init__(self):

super(Net,self).__init__

self.fc1=nn.Linear(784,128)

self.fc2=nn.Linear(128,128)

self.fc3=nn.Linear(128,10)

defforward(self,x):

x=x.view(-1,784)

x=F.relu(self.fc1(x))

x=F.relu(self.fc2(x))

x=self.fc3(x)

returnx

不到二十行代码。

但林晨知道,这二十行背后是三十年来神经网络研究的结晶。

每一层Linear代表一次矩阵乘法和偏置加法,每个ReLU激活函数给模型注入非线性——正是这种非线性让神经网络能够拟合复杂的函数关系。

他想起大学时上的《人工智能导论》,教授说神经网络是“黑箱”

热门小说推荐
穆玄凌仙

穆玄凌仙

关于穆玄凌仙(单女主无系统天才流)一个普通青年,因梦中无字古书而寻找,被其带到霄天界中。因家中长辈而踏入修炼界,一路前行,追寻那无数修士都梦寐以求却又如同泡影的成仙之路。诱惑迷茫危机入侵无处不在,冲破重重阻碍,与宗门一路前行。...

分手后前女友又找上门

分手后前女友又找上门

TXT下载,最新章节,无错,番外...

乘风霁月

乘风霁月

TXT下载,最新章节,无错,番外...

每日热搜小说推荐