iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0
自我挑戰組

python-資料分析與機器學習系列 第 17

DAY17-多層感知器(MLP)

  • 分享至 

  • xImage
  •  

多層感知器(Multilayer Perceptron,MLP)是一種人工神經網絡(ANN)的基本類型,用於機器學習和深度學習。通常由一個輸入層、多個隱藏層和一個輸出層。

結構
輸入層:Mnist數字圖片是一張28*28的圖片
隱藏層:位於輸入層和輸出層之間的一個或多個層,用於學習從輸入到輸出的映射關係。可加入拋棄層
輸出層:生成模型的輸出,0-9共十個數字。

多層感知器圖片便是流程如下:
資料預處理->建立多層感知器模型->訓練模型->評估模型->圖片預測

資料預處理

from keras.datasets import mnist
from keras.src.utils import np_utils

# 載入數據集,並將其分為訓練集和測試集
(train_feature, train_label), (test_feature, test_label) = mnist.load_data()
#image轉換
train_feature_vector = train_feature.reshape(len(train_feature),784).astype('float32')
test_feature_vector = test_feature.reshape(len(test_feature),784).astype('float32')
#image標準化
train_feature_nor = train_feature_vector/255
test_feature_nor = test_feature_vector/255
#轉為One-Hot-Encoding編碼
train_label_onehot = np_utils.to_categorical(train_label)
test_label_onehot = np_utils.to_categorical(test_label)

建立多層感知器模型

from keras.models import Sequential
from keras.layers import Dense

model = Sequential()
#建立輸入層與隱藏層
model.add(Dense(units=256,input_dim=784,kernel_initializer='normal',activation='relu'))
#隱藏神經元有256個,輸入神經元有784個

#建立輸出層
model.add(Dense(units=10,kernel_initializer='normal',activation='softmax'))
#輸出神經元10個

模型訓練

#設定訓練方式
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])

#進行訓練
train_his = model.fit(x=train_feature_nor,y=train_label_onehot,validation_split=0.3,epochs=10,batch_size=250,verbose=2)
#epochs:訓練次數,batch_size:每次讀取多少資料,verbose=2:過程簡易顯示

評估模型

scores = model.evaluate(test_feature_nor,test_label_onehot)
print('準確率=',scores[1])

圖片預測

import numpy as np
prediction=model.predict(test_feature_nor)
predicted_labels = np.argmax(prediction, axis=1)
print(predicted_labels)

---20231002---


上一篇
DAY16-Mnist資料集的預處理
下一篇
DAY18-卷積神經網路(CNN)(上)
系列文
python-資料分析與機器學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言