學習Keras基礎 模型

2021-08-19 19:17:48 字數 3669 閱讀 6954

keras中文官方文件

深度學習:keras入門(一)之基礎篇

keras有兩種型別的模型,序列模型和函式式模型,函式式模型應用更為廣泛,序貫模型是函式式模型的一種特殊情況。

序列模型是多個網路層的線性堆疊,也就是「一條路走到黑」。這種模型各層之間是依次順序關係的線性關係。

1.1構造模型:增加layer

a)通過傳遞list,一次性構建

from keras.models import sequential

from keras.layers import dense, activation

layers = [dense(32, units=784),activation('relu'),dense(10),activation('softmax')]

model = sequential(layers)

b)通過.add()方法,一層一層構建

model = sequential()

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

model.add(activation('relu'))

model.add(dense(10))

model.add(activation('relu'))

1.2指定輸入資料的shape

模型需要知道輸入資料的shape,因此,第一層需指定輸入資料shape的引數,後面各層則不需要,可以自動推導。

1.3編譯

在訓練之前,我們需要對學習過程進行配置。compile()3個常用引數:優化器optimizer,損失函式loss,指標列表metrics。

# for a binary classification problem

model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['accuracy'])

# for a mean squared error regression problem

model.compile(optimizer='rmsprop',loss='mse')

1.4訓練

keras以numpy陣列作為輸入資料和標籤的資料型別,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)

batch_size:整數,指定進行梯度下降時每個batch包含的樣本數。

epochs:整數,訓練終止時的epochs數

verbose:日誌顯示,0為不輸出,1為輸出進度條記錄,2為每個epoch輸出一條記錄

validation_split:0-1,指定一定比例資料作為驗證集

1.5評估

evaluate(self, x, y, batch_size=32, verbose=1, sample_weight=none)
本函式按batch計算在某些輸入資料上模型的誤差,verbose只能取0,1。如果模型沒有其他評價指標,返回乙個測試誤差的標量值;如果模型還有其他評價指標,返回乙個標量的list

1.6例子:基於多層感知器的softmax多分類

from keras.models import sequential

from keras.layers import dense, dropout, activation

from keras.optimizers import sgd

# generate dummy data

import numpy as np

x_train = np.random.random((1000, 20))

y_train = keras.utils.to_categorical(np.random.randint(10, size=(1000, 1)), num_classes=10)

x_test = np.random.random((100, 20))

y_test = keras.utils.to_categorical(np.random.randint(10, size=(100, 1)), num_classes=10)

model = sequential()

# dense(64) is a fully-connected layer with 64 hidden units.

# here, 20-dimensional vectors.

model.add(dense(64, activation='relu', input_dim=20))

model.add(dropout(0.5))

model.add(dense(64, activation='relu'))

model.add(dropout(0.5))

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

sgd = sgd(lr=0.01, decay=1e-6, momentum=0.9, nesterov=true)

model.compile(loss='categorical_crossentropy',optimizer=sgd,metrics=['accuracy'])

model.fit(x_train, y_train,epochs=20, batch_size=128)

score = model.evaluate(x_test, y_test, batch_size=128)

keras函式式介面是使用者定義多輸出模型、非迴圈有向模型或具有共享層模型等複雜模型的途徑。

2.1例子:全連線網路

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

Keras學習筆記(二)Keras模型的建立

在keras中設定了兩類深度學習模型,區別在於不同的拓撲結構 序列模型 sequential類 通用模型 model類 一 序列模型 方法一 一次性定義層 from keras.models import sequential from keras.layers import dense,activ...

keras機器學習基礎

機器學習就是計算機用資料來學習。通過給計算機一些資料,讓計算機來學習,之後能夠進行自主計算和判斷。比如先給計算機一些阿貓阿狗的,並且告訴計算機每張是什麼 也就是標籤 計算機通過這些喂進去的資料來學習。學習完後,計算機就具備自主判斷能力,給計算機一張從未見過的阿貓或者阿狗的,計算機就能夠給打乙個標籤 ...

keras評估模型

當建立好模型並且用來訓練之後,如何評估模型的好壞,準確度又如何呢?三種常用方法 1 使用自動驗證方法 在 fit 函式中增加乙個validation split引數,該引數用來進行驗證效果 該引數可以自由設定,一般設定為20 或者30 也就是測試集佔總資料集的20 或者30 的資料用來進行驗證,其餘...