怎么改mnist数据的标签_MNIST手写数字辨识 mma首操

2754dc6174b6db8ff337d0db24d1112e.png

从官网搞到的MNIST数据集并不是储存格式很是奇怪...我还是改成了bmp和csv,用的python代码可以直接导出,只需要改一些地址,详见:

CSDN-专业IT技术社区-登录​blog.csdn.net

首先对图片和标签数据进行了一些预处理,基本如下:

(*Data Import and Preprocessing*)
trainString=StringTemplate["/Users/apple/Desktop/MNIST/train/train_``.bmp"][#]&/@Range[0,59999];
trainLabel=Flatten@Import["/Users/apple/Desktop/MNIST/train_labels.csv"];
trainLabel=IdentityMatrix[10][[1+trainLabel[[#]]]]&/@Range[60000];
trainImage=Import[ToString[trainString[[#]]]]&/@Range[60000];
trainImage=ColorConvert[trainImage[[#]],"Grayscale"]&/@Range[60000];
trainData=ImageData[trainImage[[#]]]&/@Range[60000];
trainData=Flatten[trainData[[#]],1]&/@Range[60000];

testString=StringTemplate["/Users/apple/Desktop/MNIST/test/test_``.bmp"][#]&/@Range[0,9999];
testLabel=Flatten@Import["/Users/apple/Desktop/MNIST/test_labels.csv"];
(*testLabel=IdentityMatrix[10][[1+testLabel[[#]]]]&/@Range[10000];*)
testImage=Import[ToString[testString[[#]]]]&/@Range[10000];
testImage=ColorConvert[testImage[[#]],"Grayscale"]&/@Range[10000];
testData=ImageData[testImage[[#]]]&/@Range[10000];
testData=Flatten[testData[[#]],1]&/@Range[10000];

采用bp神经网络进行训练,300+100 HN,Softmax,CrossEntropy

net=NetChain[
{
	NetInitialize@LinearLayer[300,"Input"->28*28],
	ElementwiseLayer[Ramp],
	NetInitialize@LinearLayer[100,"Input"->300],
	ElementwiseLayer[Ramp],
	NetInitialize@LinearLayer[10,"Input"->100],
	SoftmaxLayer[]
},
	"Output"->NetDecoder[{"Class",Range[0,9]}]
];

traindata=trainData[[#]]->trainLabel[[#]]&/@Range[60000];
results=NetTrain[
	net,traindata,All,
	LossFunction->CrossEntropyLossLayer["Probabilities"],
	MaxTrainingRounds->15
]
trainedNet=results["TrainedNet"];

testError=N@Count[testLabel-trainedNet[testData],Except[0]]/10000

397ea56d0f1f1d3e32b70b08db1455f8.png

93147f6d97026fad960d40984570b6d2.png

最后error rate 1.6%这样子...

首次训练还算成功...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值