1. 程式人生 > >[keras]1.多層感知機實現

[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官方文件。

  1. 二維池化層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官方文件。

  1. Activation層
    keras.layers.core.Activation(activation)

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

預定義啟用函式:

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

  1. Dropout層
    keras.layers.core.Dropout(p)

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

  1. 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。

  1. Sequential模型compile方法
    compile(self,optimizer, loss, metrics=[], sample_weight_mode=None)

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

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

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

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

  1. 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。

  1. 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可見,隱藏層中的神經元和輸入層中各個輸入完全連線,輸出層中的神經元和隱藏層中的各個神經元也完全連線。因此,多層感知機