Keras的基本使用 1 建立,編譯,訓練模型

2021-09-23 23:45:58 字數 4562 閱讀 1365

keras 是乙個用 python 編寫的,高階的神經網路 api,使用 tensorflow,theano 等作為後端。快速,好用,易驗證是它的優點。

官方文件傳送門:

中文文件傳送門:zh

中文第三方文件:

方法一:使用 sequential() 搭建模型

sequential 是實現全連線網路的最好方式。

1)sequential 模型是多個網路層的線性堆疊,可以從 keras 的模型庫中匯入 sequential 模型:

from keras.models import sequential

import tensorflow as tf

# create a sequential model

model = sequential()

using tensorflow backend.
2)將一些網路層 layers 通過add()疊加,構成乙個網路:

from keras.layers import dense,activation

model.add(dense(units=64,input_dim=100))

model.add(activation('relu'))

model.add(dense(units=10))

model.add(activation('softmax'))

也可以直接輸入乙個 list 完成 sequential 模型的搭建:

model = sequential([

(dense(units=64,input_dim=100)),

(activation('relu')),

(dense(units=10)),

(activation('softmax'))

])

簡便之處是,除第一層輸入資料的 shape 要指定外,其他層的資料的 shape 框架會自動推導。

model = sequential()

model.add(dense(32, input_shape=(784,)))

model = sequential()

model.add(dense(32, input_dim=784))

3)建立好模型後可以使用model.summary()來檢視最終的模型的結構

方法二:使用model()搭建模型

方法一是使用 sequential() (中文文件中的翻譯為:序貫模型)來搭建模型,這裡使用model()(即:函式式模型)來搭建模型。

中文文件中的說明:keras 函式式模型介面是使用者定義多輸出模型、非迴圈有向模型或具有共享層的模型等複雜模型的途徑。一句話,只要你的模型不是類似 vgg 一條路走到黑的模型,或者你的模型需要多於乙個的輸出,那麼你總應該選擇函式式模型。函式式模型是最廣泛的一類模型,序貫模型(sequential)只是它的一種特殊情況。

先來乙個簡單的例子:

from keras.layers import input, dense

from keras.models import model

# this returns a tensor

inputs = input(shape=(784,))

# a layer instance is callable on a tensor, and returns a tensor

x = dense(64, activation='relu')(inputs)

x = dense(64, activation='relu')(x)

predictions = dense(10, activation='softmax')(x)

# this creates a model that includes

# the input layer and three dense layers

model = model(inputs=inputs, outputs=predictions)

model.compile(optimizer='rmsprop',

loss='categorical_crossentropy',

metrics=['accuracy'])

model.fit(data, labels) # starts training

函式式模型提供了介面供我們使用,利用介面可以很便利的呼叫已經訓練好的模型,比如像 vgg,inception 這些強大的網路。但要注意的是,呼叫模型的同時,也呼叫了它的權重資料。函式式模型建立好之後也能夠像序貫模型一樣 compile 和 fit,方法一致。

更多詳見:/en/latest/getting_started/functional_api/#functional

網路模型搭建完後,需要對網路的學習過程進行配置,否則在呼叫 fit 或 evaluate 時會丟擲異常。可以使用compile(self, optimizer, loss, metrics=none, sample_weight_mode=none, weighted_metrics=none, target_tensors=none)來完成配置

compile()主要接收前三個引數:

model.compile(loss='categorical_crossentropy', 

optimizer='sgd', metrics=['accuracy'])

訓練模型一般使用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)

下面是訓練模型的例子(來自官方文件):

# for a single-input model with 2 classes (binary classification):

model = sequential()

model.add(dense(32, activation='relu', input_dim=100))

model.add(dense(1, activation='sigmoid'))

model.compile(optimizer='rmsprop',

loss='binary_crossentropy',

metrics=['accuracy'])

# generate dummy data

import numpy as np

data = np.random.random((1000, 100))

labels = np.random.randint(2, size=(1000, 1))

# train the model, iterating on the data in batches of 32 samples

model.fit(data, labels, epochs=10, batch_size=32)

# for a single-input model with 10 classes (categorical classification):

model = sequential()

model.add(dense(32, activation='relu', input_dim=100))

model.add(dense(10, activation='softmax'))

model.compile(optimizer='rmsprop',

loss='categorical_crossentropy',

metrics=['accuracy'])

# generate dummy data

import numpy as np

data = np.random.random((1000, 100))

labels = np.random.randint(10, size=(1000, 1))

# convert labels to categorical one-hot encoding

one_hot_labels = keras.utils.to_categorical(labels, num_classes=10)

# train the model, iterating on the data in batches of 32 samples

model.fit(data, one_hot_labels, epochs=10, batch_size=32)

Keras學習 1 使用keras建立序列模型

keras學習 1 使用keras建立序列模型 sequential model就是一些列layers的簡單堆疊。首先,我們建立乙個簡單的前向全連線網路。輸入維度784 from keras.models import sequential from keras.layers import dens...

keras基本使用示例一

初步了解了tensorflow以後,發現了基於tensorflow的非常簡潔的深度學習框架keras,只需要短短幾行 就可以編寫網路模型 下面是示例一,最簡單的使用例子,採用最基本的序貫模型 import keras from keras.models import sequential from ...

Keras的基本介紹

keras是基於theano的乙個深度學習框架,它的設計參考了torch,用python語言編寫,是乙個高度模組化的神經網路庫,支援gpu和cpu。使用文件在這 這個框架貌似是剛剛火起來的,使用上的問題可以到github提issue 下面簡單介紹一下怎麼使用keras,以mnist資料庫為例,編寫乙...