天天看點

Keras的兩種模型:序列模型(Sequential)和通用模型(Model)一.序列模型(Sequential)二.通用模型(Model)

文章目錄

  • 一.序列模型(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模型一樣訓練。

繼續閱讀