今天使用keras中的fashionminst資料集進行的,是乙個關於識別服飾的多分類問題,新知識有
知識點匯入資料集
tf.keras.datasets.fashion_mnist.load_data()
看plt.imshow(train_image[1]) & plt.show()
看資料集尺寸
print(train_image.shape)
歸一化處理
當畫素點值在0-255可以歸一化為0-1
當輸入是矩陣怎麼辦
model.add(tf.keras.layers.flatten(input_shape=(28,28)))
多分類問題
tf.keras.layers.dense(10, activation=『softmax』) & 最後一層要注意
損失函式
loss=『sparse_categorical_crossentropy』 & label是數字列表
獨熱編碼(one-hot)
loss=『categorical_crossentropy』
測試集測試
model.evaluate(test_image, test_label)
import tensorflow as tf
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
(train_image, train_label)
,(test_image, test_label)
= tf.keras.datasets.fashion_mnist.load_data(
)# print(train_image.shape) # (60000, 28, 28)用shape函式輸出訓練集size,6000張每乙個28*28
# plt.imshow(train_image[1])
# plt.show()
# print(train_image[1])
# print(train_label[1]) # 0
#進行歸一化處理
train_image = train_image/
255test_image = test_image/
255model = tf.keras.sequential(
)model.add(tf.keras.layers.flatten(input_shape=(28
,28))
)model.add(tf.keras.layers.dense(
128, activation=
'relu'))
model.add(tf.keras.layers.dense(
10, activation=
'softmax'))
model.
compile
(optimizer=
'adam'
, loss=
'sparse_categorical_crossentropy'
, metrics=
['acc'])
model.fit(train_image, train_label, epochs=5)
model.evaluate(test_image, test_label)
# 用測試集進行測試
import tensorflow as tf
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
和往常一樣,先導入需要用到的庫
(train_image, train_label)
,(test_image, test_label)
= tf.keras.datasets.fashion_mnist.load_data(
)# print(train_image.shape) # (60000, 28, 28)用shape函式輸出訓練集size,6000張每乙個28*28
獲得我們需要的資料集,並且用shape函式看一看訓練集的size
用plt.imshow()看一看訓練集的第2個,是一件t-shirt
print
(train_image[1]
)# np.max(train_image[1]) # 這個可以看矩陣中的最大值是255
只擷取了一部分,可以看到是28*28的矩陣,每乙個畫素有乙個值代表顏色(取值在0-255)
print
(train_label[1]
)# 0
訓練集中第2個資料的label是0,代表的是t-shirt
model = tf.keras.sequential(
)model.add(tf.keras.layers.flatten(input_shape=(28
,28))
)
因為輸入的是乙個28*28的矩陣,所以不能用dense,我們用flatten將矩陣扁平成乙個向量
model.add(tf.keras.layers.dense(
128, activation=
'relu'
))
第二層設定為128個神經元,因為考慮到特徵比較多,activation選用relu
model.add(tf.keras.layers.dense(
10, activation=
'softmax'
))
輸出的時候,因為是多分類過程(具體來說是10分類),所以輸出10個,activation用softmax
model.
compile
(optimizer=
'adam'
, loss=
'sparse_categorical_crossentropy'
, metrics=
['acc'
])
損失函式loss選擇sparse_categorical_crossentropy,是因為多分類問題的lebal是像[0,1,2,3,4]這種數字的情況
同時在訓練時將準確度顯示出來
用60000張的訓練集進行訓練,訓練5次
訓練結束後準確度為89%`
model.evaluate(test_image, train_label)
用測試集去測試model的效能
可以看到model在測試集上的準確度是86%
P4學習筆記(三)P4程式語言簡介
上圖展示了p4語言主要結構,下面簡單講解一下p4的基本語法 header ethernet h header vlan tag h struct my headers ht 基本型別派生型別struct 無序成員集合 typedef bit 48 ethernetaddress typedef bi...
資料結構 P4
include 用指標輸出陣列元素 自己寫的函式是array,老師的是array1 2016年6月1日13 28 52 void show array1 int p a的位址傳遞給了p指標變數,p代表a 0 因此p現在是陣列第乙個元素的位址 void show array int a 自己寫的這個欠...
閱讀 用P4對資料平面進行程式設計
關於題目,對資料平面進行程式設計,在之前讀過the road to sdn,軟體定義網路的思想在於數控分離,其對網路行為的程式設計暫時只侷限於網路控制平面。其 平面在很大程度上受制於功能固定的包處理硬體。而p4語言的出現就是為了完全擺脫網路資料平面的束縛。p4被稱作為完全可程式設計南向程式設計介面,...