手寫數字識別 1

2021-08-14 15:24:53 字數 2016 閱讀 9017

mnist.pkl.gz

先來用乙個神經網路

import tensorflow as tf

import numpy as np

from tensorflow.examples.tutorials.mnist import input_data

mnist=input_data.read_data_sets('mnist_data/',one_hot=true)

x=tf.placeholder(tf.float32,[none,784])#輸入佔位符(每張手寫數字784個畫素點)

#placeholder(type,strucuct…)第乙個引數是你要儲存的資料的資料型別,大多數是tensorflow中的float32資料型別,後面的引數就是要儲存資料的結構,

# 計算分類softmax會將xw+b分成10類,對應0-9

w=tf.variable(tf.zeros([784,10])) #權重

#tf.variable()返回乙個tf.variable類的例項。zeros初始值 。

b=tf.variable(tf.zeros([10]))#偏置

init=tf.global_variables_initializer()#初始化 tf.initialize_all_variables()

y=tf.nn.softmax(tf.matmul(tf.reshape(x,[-1,784]),w)+b)# 輸入矩陣x與權重矩陣w相乘,加上偏置矩陣b,然後求softmax(sigmoid函式公升級版,可以分成多類)

#tf.matmul實現了矩陣乘法的功能。

y_=tf.placeholder(tf.float32,[none,10])#輸入佔位符(這張手寫數字具體代表的值,0-9對應矩陣的10個位置)

cross_entropy=-tf.reduce_sum(y_*tf.log(y))# 計算偏差和

# 使用梯度下降法(步長0.01),來使偏差和最小

is_correct=tf.equal(tf.argmax(y,1),tf.argmax(y_,1))

#argmax( input, axis=none, name=none, dimension=none )

#argmax返回的是索引值,返回每一行或者每一列的最大值的索引,當選擇axis=1時。表示每一行的最大值,0表示每列的最大值索引

accuracy=tf.reduce_mean(tf.cast(is_correct,tf.float32))

#求平均值tf.reduce_mean(input_tensor, reduction_indices=none, keep_dims=false, name=none)

#input_tensor:待求值的tensor。

#reduction_indices:在哪一維上求解。如果不指定第二個引數,那麼就在所有的元素中取平均值

# 為0,則第一維的元素取平均值,即每一列求平均值。為1,則第二維的元素取平均值,即每一行求平均值

optimizer=tf.train.gradientdescentoptimizer(0.003)

train_step=optimizer.minimize(cross_entropy)

#最速下降法讓交叉熵下降,步長為0.003. 返回的train_step操作物件,在執行時會使用梯度下降來更新引數。因此,整個模型的訓練可以通過反覆地執行train_step來完成。

sess=tf.session()

sess.run(init)

for i in range(1000): #訓練1000次

batch_x,batch_y=mnist.train.next_batch(100)# 隨機取100個手寫數字

train_data=

sess.run(train_step,feed_dict=train_data)# 執行梯度下降演算法,輸入值x:batch_x,輸入值y:batch_y

print(sess.run(accuracy, feed_dict=)) #執行精度圖,x和y_從測試手寫中取值

手寫數字識別

這幾天在想這做字元識別方面的程式,看了很多 但是發現 上的幾乎用處都不是特別的大,理論一大堆,但是用在程式裡面則很難實現,看到有些 上說用連碼法,但是連碼法對結構的變化太敏感了,但是也從一些 裡獲得了一些靈感,我採用的是網格匹配法,準備工作採集樣本,得到了樣本的網格資訊用於接下來的識別,當然也可 一...

手寫數字識別

import os os.environ tf cpp min log level 2 不想讓警告的資訊輸出可以新增 from tensorflow.examples.tutorials.mnist import input data import tensorflow as tf def mnis...

Python手寫數字識別之路1

元組字串 格式化字串 序列雖然python是從c語言發展而來,但是我覺得和c語言區別巨大。首先玩乙個小遊戲 python import random counts 3answer random.randint 1,10 生成乙個隨機數,guess while counts 0 temp input ...