[keras]1.多層感知機實現
“`
創建於星期二星期六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))```
- 1s - 損失:0.0250 - ACC:0.9937 - VAL _ ACC:0.9788大紀元7月10日 - 1秒 - 損失:0.0192 - ACC:0.9952 - VAL _ ACC: 0.9797大紀元8/10 - 1秒 - 損失:0.0145 - ACC:0.9967 - VAL 損失:0.0578 - VAL ACC:0.9818大紀元9月10日 - 1秒 - 損失:0.0117 - VAL 損失:0.0653 - VAL ACC:0.9798 大紀元10/10 - 1秒-損失:0.0078 - ACC:0.9984 - val_loss:0.0588 - val_acc:0.9827 基線誤差:1.73%“`
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)))
now:model.output_shape == (None, 64, 32, 32)
model.add(Flatten())
now:model.output_shape == (None, 65536)
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]1.多層感知機實現
“` 創建於星期二星期六14:42:13 2018 @author:yuyangyg“”“#baseline MLP for mnist dataset import numpy from keras.datasets import mnist from ke
TensorFlow HOWTO 4.1 多層感知機(分類)
4.1 多層感知機(分類) 這篇文章開始就是深度學習了。多層感知機的架構是這樣: 輸入層除了提供資料之外,不幹任何事情。隱層和輸出層的每個節點都計算一次線性變換,並應用非線性啟用函式。隱層的啟用函式是壓縮性質的函式。輸出層的啟用函式取決於標籤的取值範圍。 其本質上相當於
keras中使用MLP(多層感知機)神經網路來實現MNIST手寫體識別
Keras是一個基於python的的深度學習框架,比tensorflow更簡單易用,適合入門學習,本篇文章主要介紹使用keras實現手寫體識別任務。環境為python3+,Keras2.1,神經網路基礎知識在此不做過多介紹。 1. 載入MNIST資料。方式
Keras簡單實現多層感知機(MLP)程式碼
import keras from keras.model import Sequential from keras.layers import Dense,Dropout from keras.op
用pytorch實現多層感知機(MLP)(全連線神經網路FC)分類MNIST手寫數字體的識別
1.匯入必備的包 1 import torch 2 import numpy as np 3 from torchvision.datasets import mnist 4 from torch import nn 5 from torch.autograd import Variable 6
gluon 實現多層感知機MLP分類FashionMNIST
from mxnet import gluon,init from mxnet.gluon import loss as gloss, nn from mxnet.gluon import data as gdata from mxnet import nd,autograd import gl
tensorflow實現多層感知機進行手寫字識別
logits=multilayer_perceptron(X) #使用交叉熵損失 loss_op=tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=logits,labels=Y))
Deeplearning4j 實戰(5):基於多層感知機的Mnist壓縮以及在Spark實現
在上一篇部落格中,我們用基於RBM的的Deep AutoEncoder對Mnist資料集進行壓縮,應該說取得了不錯的效果。這裡,我們將神經網路這塊替換成傳統的全連線的前饋神經網路對Mnist資料集進行壓縮,看看兩者的效果有什麼異同。整個程式碼依然是利用Deeplearning4j進行實現,並且為了方
TensorFlow學習筆記(4)--實現多層感知機(MNIST資料集)
前面使用TensorFlow實現一個完整的Softmax Regression,並在MNIST資料及上取得了約92%的正確率。現在建含一個隱層的神經網路模型(多層感知機)。 import tensorflow as tf import numpy as np
多層感知機-印第安人糖尿病診斷-基於keras的python學習筆記(一)
版權宣告:本文為博主原創文章,未經博主允許不得轉載。https://blog.csdn.net/weixin_44474718/article/details/86219792 函式解釋 np.random.seed()函式,每次執行程式碼時設定相同的seed,則每次生成的隨機數也相
神經網路之多層感知機MLP的實現(Python+TensorFlow)
用 MLP 實現簡單的MNIST資料集識別。 # -*- coding:utf-8 -*- # # MLP """ MNIST classifier, 多層感知機實現 """ # Import
深度學習Deeplearning4j 入門實戰(5):基於多層感知機的Mnist壓縮以及在Spark實現
在上一篇部落格中,我們用基於RBM的的Deep AutoEncoder對Mnist資料集進行壓縮,應該說取得了不錯的效果。這裡,我們將神經網路這塊替換成傳統的全連線的前饋神經網路對Mnist資料集進行壓縮,看看兩者的效果有什麼異同。整個程式碼依然是利用Deeplearnin
TensorFlow實戰(五)- 使用TensorFlow實現多層感知機
一,多層感知機簡介 多層感知機也叫 深度前饋網路 或 前饋神經網路。 “多層”本質上指的是多層隱含層,神經網路的非線性也主要體現在隱含層非線性的啟用函式上,理論上只要隱含節點足夠多,只要有一層隱含層就可以擬合任意函式,但隱含層越多,就越容易擬合複雜函式,並且
TensorFlow上實現MLP多層感知機模型
一、多層感知機簡介 Softmax迴歸可以算是多分類問題logistic迴歸,它和神經網路的最大區別是沒有隱含層。理論上只要隱含節點足夠多,即時只有一個隱含層的神經網路也可以擬合任意函式,同時隱含層越多,越容易擬合複雜結構。為了擬合複雜函式需要的隱含節點的數目,基本上隨著隱
【Keras】MLP多層感知機
在進行神經網路模型的構建時,有優化模型訓練速度的技巧,以下從兩個方面進行分析。並在接下來實現MLP的模型中應用。 1、優化梯度下降 之前使用的梯度下降訓練模型,優化模型的引數,但是每次更新梯度時需要把資料集中的每個樣本都重新計算一邊,在海量計算的深度學習中,
多層感知機原理詳解 & Python與R實現
轉載自:https://www.cnblogs.com/feffery/p/8996623.html ; 部落格園網站“費弗裡”博主的《資料科學學習手札34》 因作者正在進行電力使用者短期負荷預測方向學習,正遇到了多層感知機的應用問題,所以搜到部落格園中費
MLP多層感知機(人工神經網路)原理及程式碼實現
一、多層感知機(MLP)原理簡介多層感知機(MLP,Multilayer Perceptron)也叫人工神經網路(ANN,Artificial Neural Network),除了輸入輸出層,它中間可以有多個隱層,最簡單的MLP只含一個隱層,即三層的結構,如下圖:從上圖可以看
tensorflow實現多層感知機
在前面的部落格中我們已經討論過softmax實現分類的例子,該模型最大的特點是簡單易用,但是擬合能力不強。它和傳統意義上的神經網路的最大區別是沒有隱含層。 對於神經網路來說,引入非線性隱含層後,理論上只要隱含節點足夠多,即使只有一個隱含層的神經網路也可以擬合任
深度學習:多層感知機MLP數字識別的程式碼實現
深度學習我看的是neural network and deep learning 這本書,這本書寫的真的非常好,是我的導師推薦的。這篇部落格裡的程式碼也是來自於這,我最近是在學習Pytorch,學習的過程我覺得還是有必要把程式碼自己敲一敲,就像當初學習機器學習一
從頭學pytorch(五) 多層感知機及其實現
多層感知機 上圖所示的多層感知機中,輸入和輸出個數分別為4和3,中間的隱藏層中包含了5個隱藏單元(hidden unit)。由於輸入層不涉及計算,圖3.3中的多層感知機的層數為2。由圖3.3可見,隱藏層中的神經元和輸入層中各個輸入完全連線,輸出層中的神經元和隱藏層中的各個神經元也完全連線。因此,多層感知機