keras 1 多層感知機實現

2021-08-16 05:53:51 字數 3941 閱讀 9538

「`

建立於星期二星期六14:42:13 2018 @author:yuyangyg「」「#baseline mlp for mnist dataset import numpy from keras.datasets import mnist from keras.models import從keras.layers匯入序列從keras.layers進口密度從keras.utils進口退出進口np_utils#修復隨機種子的重現性#seed = 7#numpy.random.seed(seed)#load data(x_train,y_train),(x_test,y_test)= mnist.load_data() #將28 * 28影象平鋪為每個影象的784向量num_pixels = x_train.shape [1] * x_train.shape [2] x_train = x_train.reshape(x_train.shape [0],num_pixels).type(「float32 「)x_test = x_test.reshape(x_test.shape [0],num_pixels).astype(」float32「)#將輸入從0-255歸一化為0-1 x_train = x_train / 255 x_test = x_test / 255#乙個熱門編碼輸出將標籤變為向量y_train = np_utils.to_categorical(y_train)y_test = np_utils.to_categorical(y_test)num_classes = y_test.shape [1] #define baseline model def baseline_model(): #crea te模型

model = sequential()

model.add(dense(num_pixels,input_dim = num_pixels,kernel_initializer =「normal」,activation =「relu」))

model.add(dense(num_classes,kernel_initializer =「normal」,activation =「softmax」) ) #編譯模型 model.compile(loss =「categorical_crossentropy」,optimizer =「adam」,metrics = [「accuracy」]) return model #建立模型模型= baseline_model()#擬合模型model.fit(x_train,y_train ,validation_data =(x_test,y_test),epochs = 10,batch_size = 200,verbose = 2)#最終評估模型評分= model.evaluate(x_test,y_test,verbose = 0)print(「baseline error:%。2f %% 「%(100 - 分數[1] * 100))```

2.二維卷積層conv2d keras.layers。 convolutional.conv2d(過濾器,核心大小,步幅=(1,1),填充= 『有效』,資料格式=無,擴張率=(1,1),活化=無,使用偏壓=真, kernel _ initializer =』glorot _ uniform』,偏見

_initializer=』zeros』, kernel_regularizer=none, bias_regularizer=none, activity_regularizer=none, kernel_constraint=none, bias_constraint=none)

二維卷積層對二維輸入進行滑動窗卷積,當使用該層作為第一層時,應提供input_shape引數。

filters:卷積核的數目;

kernel_size:卷積核的尺寸;

strides:卷積核移動的步長,分為行方向和列方向;

padding:邊界模式,有「valid」,「same」或「full」,full需要以theano為後端;

其他引數請參看keras官方文件。

二維池化層maxpooling2d

keras.layers.pooling.maxpooling2d(pool_size=(2,2), strides=none, padding=』valid』, data_format=none)

對空域訊號進行最大值池化。

pool_size:池化核尺寸;

strides:池化核移動步長;

padding:邊界模式,有「valid」,「same」或「full」,full需要以theano為後端;

其他引數請參看keras官方文件。

activation層

keras.layers.core.activation(activation)

啟用層對乙個層的輸出施加啟用函式。

預定義啟用函式:

softmax,softplus,softsign,relu,tanh,sigmoid,hard_sigmoid,linear等。

dropout層

keras.layers.core.dropout(p)

為輸入資料施加dropout。dropout將在訓練過程中每次更新引數時隨機斷開一定百分比(p)的輸入神經元連線,dropout層用於防止過擬合。

flatten層

keras.layers.core.flatten()

flatten層用來將輸入「壓平」,即把多維的輸入一維化,常用在從卷積層到全連線層的過渡。flatten不影響batch的大小。

例子:model =sequential()

model.add(convolution2d(64,3, 3, border_mode=』same』, input_shape=(3, 32, 32)))

model.add(flatten())

7.dense層全連線層

keras.layers.core.dense(units,activation=none, use_bias=true, kernel_initializer=』glorot_uniform』,bias_initializer=』zeros』, kernel_regularizer=none, bias_regularizer=none,activity_regularizer=none, kernel_constraint=none, bias_constraint=none)

units:輸出單元的數量,即全連線層神經元的數量,作為第一層的dense層必須指定input_shape。

sequential模型compile方法

compile(self,optimizer, loss, metrics=, sample_weight_mode=none)

編譯用來配置模型的學習過程,其引數有:

optimizer:字串(預定義優化器名)或優化器物件;

loss:字串(預定義損失函式名)或目標函式;

metrics:列表,包含評估模型在訓練和測試時的網路效能的指標,典型用法是metrics=[『accuracy』];

sequential模型fit方法

fit(self,x, y, batch_size=32, epochs=10, verbose=1, callbacks=none,validation_split=0.0, validation_data=none, shuffle=true, class_weight=none,sample_weight=none, initial_epoch=0)

verbose:日誌顯示,0為不在標準輸出流輸出日誌資訊,1為輸出進度條記錄,2為每個epoch輸出一行記錄;

validation_split:0~1之間的浮點數,用來指定訓練集的一定比例資料作為驗證集。驗證集將不參與訓練,並在每個epoch結束後測試的模型的指標,如損失函式、精確度等;

validation_data:形式為(x,y)的tuple,是指定的驗證集。此引數將覆蓋validation_spilt。

sequential模型evaluate方法

evaluate(self,x, y, batch_size=32, verbose=1, sample_weight=none)

keras多層感知機MLP

肯定有人要說什麼多層感知機,不就是幾個隱藏層連線在一起的嗎。話是這麼說,但是我覺得我們首先要自己承認自己高階,不然怎麼去說服 hu nong 別人呢 from keras.models import sequential from keras.layers import dense import n...

Keras多層感知機識別MNIST資料集

windows 10,python 3.5 import numpy as np import pandas as pd from keras.utils import np utils from keras.datasets import mnist import matplotlib.pyplo...

tensorflow實現多層感知機

tensorflow 多層感知機識別手寫數字 匯入資料 import tensorflow as tf import tensorflow.tutorials.minist.input data as input data minist input data.read datasets mnist ...