P4 使用keras進行多分類問題

2021-09-29 17:01:03 字數 3899 閱讀 6248

今天使用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被稱作為完全可程式設計南向程式設計介面,...