mathematica来学习神经网络,实在是简约,比python还要简洁。本文,学习一下用mathematica来训练一个神经网络,并尝试着预测图像。
工具/原料
1
电脑
2
mathematica
方法/步骤
1
给定一幅RGB图片,并转化为像素数据:a=ImageData[img];
3
把图片转化为训练集:r= Flatten@MapIndexed[(2(#2-1.)/(c-1)-1.)->#1 &,a,{2}];输入值为像素的位置;输出值为像素的RGB颜色参数。
4
构造一个未训练的神经网络:d=NetChain[{100,Ramp,250,Ramp,10,LogisticSigmoid,3}]输出值为3元向量。因此,你步骤一准备的图片如果不是RGB图片,请用Rasterize处理一下,免得训练的时候报错。
5
用训练集r来训练神经网络d,训练20回合:t=NetTrain[d,r, MaxTrainingRounds -> 20];
6
用训练的神经网络来预测原图,看看预测效果:p=Range[-1,1,2./#]&/@c;q = Tuples[p];Image[Partition[t@q, Length[p[[2]]]]]额,一塌糊涂。
注意事项
这个例子不成功,并不能说明神经网络不够强大。