文章目錄
- 一.序列模型(Sequential)
-
- 1.1 list構造
- 1.2 add()構造
- 二.通用模型(Model)
Keras中有兩種不同的模型:序列模型(Sequential)和通用模型(Model)
一.序列模型(Sequential)
序列模型的兩種建立方式:list構造和add()構造
1.1 list構造
通過向Sequential模型傳遞一個layer的list來構造該模型:
from keras.models import Sequential
from keras.layers import Dense, Activation
layers = [Dense(32, input_shape = (784,)),
Activation('relu'),
Dense(10),
Activation('softmax')]
model = Sequential(layers)
1.2 add()構造
通過add逐層向Sequential中添加layer
from keras.models import Sequential
from keras.layers import Dense, Activation
model = Sequential() # 定義模型
model.add(Dense(units=64, activation='relu', input_dim=100)) # 定義網絡結構
model.add(Dense(units=10, activation='softmax')) # 定義網絡結構
model.compile(loss='categorical_crossentropy', # 定義loss函數、優化方法、評估标準
optimizer='sgd',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5, batch_size=32) # 訓練模型
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128) # 評估模型
classes = model.predict(x_test, batch_size=128) # 使用訓練好的資料進行預測
二.通用模型(Model)
from keras.layers import Input, Dense
from keras.models import Model
# 輸入層,确定輸入次元
input = input(shape = (784, ))
# 2個隐含層,每個都有64個神經元,使用relu激活函數,且由上一層作為參數
x = Dense(64, activation='relu')(input)
x = Dense(64, activation='relu')(x)
# 輸出層
y = Dense(10, activation='softmax')(x)
model = Model(inputs=input, outputs=y)
model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(data, labels)
注意⚠️,在新版的keras中
model = Model(inputs=input, outputs=y)
中的inputs和outpus不再是之前的input和output,注意加s!
優點:
- 1、 每個layer執行個體都是可以調用的,它傳回一個tensor
- 2、 輸入tensor和輸出tensor可以用來定義一個Model
- 3、 函數式的模型也可以像 Sequential模型一樣訓練。