import tensorflow as tf
import matplotlib.pyplot as plt
''' 讀取mnist資料方法一'''
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets(
'mnist_data'
,one_hot=
true
)'''1)獲得資料集的個數'''
train_nums = mnist.train.num_examples #訓練集個數
validation_nums = mnist.validation.num_examples
test_nums = mnist.test.num_examples #測試集個數
print
('mnist資料集的個數'
)print
(' >>>train_nums=%d'
% train_nums,
'\n'
,#輸出55000
'>>>validation_nums=%d'
% validation_nums,
'\n'
,#輸出5000
'>>>test_nums=%d'
% test_nums,
'\n'
)#輸出10000
'''2)獲得資料值'''
train_data = mnist.train.images #所有訓練資料
val_data = mnist.validation.images #(5000,784)
test_data = mnist.test.images #(10000,784)
print
('>>>訓練集資料大小:'
,train_data.shape,
'\n'
,'>>>一副影象的大小:'
,train_data[0]
.shape)
'''3)獲取標籤值label=[0,0,...,0,1],是乙個1*10的向量'''
train_labels = mnist.train.labels #(55000,10)
val_labels = mnist.validation.labels #(5000,10)
test_labels = mnist.test.labels #(10000,10)
print
('>>>訓練集標籤陣列大小:'
,train_labels.shape,
'\n'
,'>>>一副影象的標籤大小:'
,train_labels[1]
.shape,
'\n'
,'>>>一副影象的標籤值:'
,train_labels[0]
)'''4)批量獲取資料和標籤【使用next_batch(batch_size)】'''
batch_size =
100#每次批量訓練100幅影象
batch_xs,batch_ys = mnist.train.next_batch(batch_size)
print
('使用mnist.train.next_batch(batch_size)批量讀取樣本\n'
)print
('>>>批量讀取100個樣本:資料集大小='
,batch_xs.shape,
'\n'
,'>>>批量讀取100個樣本:標籤集大小='
,batch_ys.shape)
#xs是影象資料(100,784);ys是標籤(100,10)
'''5)顯示影象'''
plt.figure(
)for i in
range
(100):
im = train_data[i]
.reshape(28,
28)im = batch_xs[i]
.reshape(28,
28)plt.imshow(im,
'gray'
)#plt.imshow()函式負責對影象進行處理,並顯示其格式,但是不能顯示。其後跟著plt.show()才能顯示出來。
#plt.imshow(some_digmit_image, cmap = matplotlib.cm.binary) cmap是圖譜
plt.pause(
0.0000001
)#設定顯示的時長
plt.show(
)
其中,mnist.train.next_batch() 函式包含乙個引數 batch_size,表示隨即從訓練集中抽取 batch_size 個樣本輸入神經網路,並將樣本的畫素值和標籤分別賦給 xs 和 ys。
在本例中,batch_size 設定為200,表示一次將200個樣本的畫素值和標籤分別賦值給 xs 和 ys ,故 xs 的形狀為(200,784),對應的ys的形狀為(200,10)。
import numpy as np
x,t = get_data(
)network = init_network
batch_size =
100accuracy_cnt =
0for i in
range(0
,len
(x), batch_size)
x_batch = x[i:i+batch_size]
y_batch = predict(network, x_batch)
p = np.argmax(y_batch, axis=1)
#獲取值最大的元素的索引 axis=1指定了在100*10的陣列中,沿第一維的方向找到值最大啊元素的索引
# 第0維對應第乙個維度 矩陣的第0維是列方向 第1維是行方向
accuracy_cnt += np.
sum(p == t[i:i+batch_size]
)#本例是按x[0:100] x[100:200]這樣提取
print
("accuracy"
+str
(float
(accuracy_cnt)
/len
(x))
)
深度學習入門
generative adversarial network gan 生成對抗網路 梯度消失 梯度擴散 gradient diffusion deep learning i.e.unsupervised feature learning 目的是讓機器自動學習良好的特徵,而免去人工選取過程 深度學習是...
深度學習入門
元胞自動機實質上是定義在乙個具有離散 有限狀態的元胞組成的元胞空間上,並按照一定的區域性規則,在離散的時間維度上演化的動力學系統。元胞又可稱為單元 細胞,是元胞自動機的最基本的組成部分。乙個標準的細胞自動機由元胞 元胞狀態 鄰域和狀態更新規則構成。用數學表示為 a l,d,s,n,f 其中l為元胞空...
深度學習入門
1 人工智慧 1956年,幾位科學家相聚在達特茅斯會議提出了人工智慧的概念。當時計算機剛剛出現不久,他們希望通過用計算機來構造複雜的,擁有與人類智慧型具有同樣本質的機器。然後幾十年,人工智慧一直在兩極分化,有些人認為這個是改變人們未來生活的乙個大的方向 但是有的人認為人工智慧是一種噱頭,或者是一種泡...