亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

自己動手制作人工神經網絡0x4:實際訓練

標簽:
Python

接下来的内容,是关于如何实际应用之前编写的ANN,来完成手写数字识别的任务。

准备

首先,需要下载数据集,以用于训练和测试。这里使用缩小版的mnist数据集。训练集有100条数据,测试集有10条数据。大家可以去这里下载。
https://raw.githubusercontent.com/makeyourownneuralnetwork/makeyourownneuralnetwork/master/mnist_dataset/mnist_test_10.csv
https://raw.githubusercontent.com/makeyourownneuralnetwork/makeyourownneuralnetwork/master/mnist_dataset/mnist_train_100.csv

Coding

导入需要的库。

import matplotlib.pyplot as plt
%matplotlib inlineimport numpy as npimport scipy.specialfrom NN import NN

导入数据。

train_file = open("./mnist_train_100.csv", 'r')
train_list = train_file.readlines()
train_file.close()

test_file = open("./mnist_test_10.csv", 'r')
test_list = test_file.readlines()
test_file.close()

初始化模型。

input_nodes = 784
hidden_nodes = 100
output_nodes = 10

learning_rate = 0.3

nn = NN(input_nodes, hidden_nodes, output_nodes, learning_rate)

开始训练。epoch为迭代次数,因为数据集比较小,每轮迭代都会用上整个训练集。这里就只迭代一次好了。
数据集每一行为一条数据,第一个值是标签,也就是这条数据所代表的数字。接下来784(28*28)个值则是每一个像素点,范围是0~255。这里等比例缩小每个像素的值,把范围缩到0~0.99,再加上0.01。最终范围是0.01到1,避免了值为0的“死值”。
标签的值也不能太极端,我们对对应数字的节点的期望值为0.99,而其他节点的期望值为0.01。

epoch = 1for i in range(epoch):    for record in train_list:
        values = record.split(',')
        inputs = (np.asfarray(values[1:]) / 255.0 * 0.99) + 0.01
        labels = np.zeros(output_nodes) + 0.01
        labels[int(values[0])] = 0.99

        nn.train(inputs, labels)

这里大家可以尝试使用完整的mnist数据集来训练。也可以尝试更改迭代次数。



作者:御史神风
链接:https://www.jianshu.com/p/9842c03dc72b


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消