import tensorflow as tf
mnist
mnist.train
mnist.validation
mnist.test
#影象顯示函式
import matplotlib.pyplot as plt
defplot_image
(image)
: plt.inshow(image.reshape(28,
28),cmap=
"binary"
)#輸入資料
x=tf.placeholder(tf.float32,[
none
,784])
y=tf.placeholder(tf.float32,
[none,10
])#定義變數
w=tf.variable(tf.random_normal(
[784,10
]))b=tf.variable(tf.zero([10
]))#模型構建
forward=tf.matmul(x,w)
+bpred=tf.nn.softmax(forward)
#損失函式
loss_function=
#交叉熵函式
#優化函式
optimizer=tf.train.gradientdenscentoptimizer(learning_rate)
.minimize(loss_function)
#準確率
correct_prefiction=tf.equal(tf.argmax(pred,1)
,tf.argmax(y,1)
)accuracy=tf.reduce_mean(tf.cast(correct_prediction,tf.float32)
#建立對話
sess=tf.sessin(
)init=tf.global_variables_initializer(
)sess.run(init)
#訓練模型
for epoch in
range
(train_epochs)
:for batch in
range
(total_batch)
: xs,ys=mnist.train.next_batc(batch_size)
sess.run(optimizer,feed_dict=
) loss,acc = sess.run(
[loss_function,accuracy]
,feed_dict=)if
(epoch)
%display_step==0:
pass
#列印準確率和損失值
#在測試集上評估模型準確率
accu_test = sess.run(accurary,feed_dict=
)#應用模型
prediction_result=sess.run(tf.argmax(pred,1)
,feed_dict=
)
多層神經網路
#兩層隱藏層
h1_nn=
256h2_nn=
64w1=tf.variable(tf.truncated_normal(
[784
,h1_nn]
,stddev=
0.1)
b1=tf.variable(tf.zero(
[h1_nn)
)w2=tf.variable(tf.truncated_normal(
[h1_nn,h2_nn]
,stddev=
0.1)
)b2=tf.variable(tf.zero(
[h2_nn]))
w3=tf.variable(tf.truncated_normal(
[h2_nn,10]
,stddev=
0.1)
)b3=tf.variable(tf.zero([10
]))y1=tf.nn.relu(tf.matul(x,w1)
+b1)
y2=tf.nn.relu(tf.matul(x,w2)
+b2)
forward=tf.matul(y1,w3)
+b3pred=tf.nn.softmax(forward)
10,knn手寫數字識別
導包 import numpy as np import matplotlib.pyplot as plt from sklearn.neighbors import kneighborsclassifier 獲取資料 feature target for i in range 10 for j i...
手寫數字識別
這幾天在想這做字元識別方面的程式,看了很多 但是發現 上的幾乎用處都不是特別的大,理論一大堆,但是用在程式裡面則很難實現,看到有些 上說用連碼法,但是連碼法對結構的變化太敏感了,但是也從一些 裡獲得了一些靈感,我採用的是網格匹配法,準備工作採集樣本,得到了樣本的網格資訊用於接下來的識別,當然也可 一...
手寫數字識別
import os os.environ tf cpp min log level 2 不想讓警告的資訊輸出可以新增 from tensorflow.examples.tutorials.mnist import input data import tensorflow as tf def mnis...