手机浏览器扫描二维码访问
深夜十一点,狭窄的书房里,只有书桌上的屏幕还亮着。
林晨盯着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下载,最新章节,无错,番外...