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 的資料用來進行驗證,其餘...