DL WITH PY系統學習(第2章)

2021-09-07 18:28:46 字數 3053 閱讀 7118

1、第乙個dl例子;

2、tensor和tensor操作;

3、dl如何通過逆向傳播和梯度下降達到學習目的。

2.1 輸入資料集的格式

from keras.datasets

import mnist

(train_images,train_labels),(test_images,test_labels) = mnist.load_data()

print(

'train_image_shape',train_images.shape)

print(

'train_labels_len',

len(train_labels))

print(

'train_labels',train_labels)

2.2訓練網路結構

network = models.sequential()

network.add(layers.dense(

512,

activation =

'relu',

input_shape = (

28*28,)))

network.add(layers.dense(

10,activation=

'softmax'))

layers(層)是訓練網路的最基本組成部分,它讀入資料,輸出對於結果來說更有用的結果。

我們這裡建立的層是全連線層,注意這裡的input_shape用了(28*28,)這種表示方式。最後輸出的結果是10選1的結果。

2.3編譯模型

network.compile(

optimizer=

'rmaprop',

loss=

'categorical_crossentropy',

metrics=[

'accuracy'])

下一步,為了讓dl能夠開始訓練,我們還需要額外的3個構建:

乙個損失函式(a loss function)—用於計算系統訓練的準確效果;

乙個優化函式(an optimizer)—用於定義優化方法;

在訓練的時候的度量—一般都是acc。

2.4處理資料集

在之前的讀入的資料中,儲存在類似(60000,28,28)這樣的結構中,不方便處理,這裡進行轉換

train_images = train_images.reshape((

60000,

28*28))

train_images = train_images.astype(

'float32')/

255test_images = test_images.reshape((

10000,

28*28))

test_images = test_images.astype(

'float32')/

255一方面是reshape,另一方面是轉換成float32結構。這兩個都是非常常見的操作。

2.5進行one_hot處理

from keras.utils

import to_categorical

train_labels = to_categorical(train_labels)

test_labels = to_categorical(test_labels)

變成這樣:

2.6 現在就嘗試訓練

network.fit(train_images,train_labels,

epochs=

5,batch_size=

128)

回顧一下這裡輸入模型的資料

rain_images 是數量*(長*寬)

train_labes 是onehot格式。這兩個部分首先要清楚。

並且進行最後的驗證

test_loss,test_acc = network.evaluate(test_images,test_labels)

注意,即使是這裡的這些非常簡單的函式和資料,如果沒有gpu的支援,也可能是需要較長時間才能夠執行的。

2.7 什麼是tensor

經常看見的tensor這個詞,所謂tensor,就是資料的容器(a container for data)

比如np.array(12)就是乙個0d tensor

np.array([12,3,6,14])乙個列表,就是乙個1d tensor

np.array([12,3,6,14],

[6,79,35,1],

[7,80,4,36,2] )

乙個列表的組合,就是乙個2d tensor

再往上堆,就是3d tensor,也是比較好理解的

2.8  tensor的組成

主要包括3個部分

維度(rank)比如3d tensor顯而易見就是3d的                     對應ndim

形狀(shape)也就是具體填充tensor裡面的具體內容       對於shape

種類(data type) float32 或者 float64之類                        對於dtype

具體列印乙個資料

import matplotlib.pyplot

as plt

digit = train_images[

3]plt.imshow(digit,

cmap=plt.cm.binary)

plt.show()

這裡這個兩次show令人印象深刻。

2.9實際情況下的影象儲存

一套256*256的128 gray的集可以儲存在(128,256,256,1)的4d tensor中;而一套同樣大小的彩色影象可以保持在(128,256,256,3)的tensor中。

如果是video data,往往必須是5維資料。

來自為知筆記(wiz)

DL WITH PY系統學習(第2章)

1 第乙個dl例子 2 tensor和tensor操作 3 dl如何通過逆向傳播和梯度下降達到學習目的。2.1 輸入資料集的格式 from keras.datasets import mnist train images,train labels test images,test labels mn...

PHP系統學習2

字串操作 字串擷取 substr 字串格式化printf 格式化無需echo sprintf 需要echo nl2br 可以將 n轉換成 wordwrap 單詞之類的函式目前不知道有什麼具體用途 strtolower 轉換小寫 strtoupper 轉換大寫 ucwords 首字母轉換成大寫 str...

Linux學習 第2章 Linux系統安裝(2)

1 設定系統安裝映象 2 啟動客戶機 掛起 暫停當前映象,下次使用時恢復即可。比啟動更快速。在通電時不要強制關閉虛擬機器,系統可能崩潰,要先機或掛起。3 修改啟動順序 vmware啟動後滑鼠點入虛擬機器裡,按f2鍵啟動boot,在boot選項中通過 將 cd rom driver 移動到第乙個位置,...