iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 10
0
AI & Data

AI初見 從零開始的TensorFlow生活系列 第 10

DAY10 - tf.keras - Functional API介紹 - 2

  • 分享至 

  • xImage
  •  

大家好,昨天介紹了Functional API,並且建立和前天用Sequential Model方法一樣的模型,雖然都是單輸入單輸出模型,但兩種的建立方法有些不同的地方,而今天要來介紹的是用Functional API建立多輸入單輸出、單輸入多輸出、多輸入多輸出模型。

首先一樣是匯入套件,和昨天一樣就不再寫一次了。

再來分別介紹三種模型的建立:

多輸入單輸出模型(Multi Input Model):
inputA=keras.Input(shape=(200,))
inputB=keras.Input(shape=(300,))
hA_1=layers.Dense(50)(inputA)
hA_2=layers.Dense(35)(hA_1)
hB_1=layers.Dense(40)(inputB)
concat=layers.Concatenate()([hA_2, hB_1])
h1=layers.Dense(20)(concat)
outputs=layers.Dense(10)(h1)
model=keras.Model(inputs=[inputA, inputB], outputs=outputs)
這個模型有inputA和inputB兩個輸入,經過隱藏層hA_2和hB_1後,用layers.Concatenate()將兩個層結合,最後有一個輸出層outputs。

單輸入多輸出模型(Multi Output Model):
inputs=keras.Input(shape=(1000,))
h1=layers.Dense(80)(inputs)
h2=layers.Dense(100)(h1)
hA_1=layers.Dense(60)(h2)
hA_2=layers.Dense(50)(hA_1)
hB_1=layers.Dense(70)(h2)
outputA=layers.Dense(10)(hA_2)
outputB=layers.Dense(5)(hB_1)
model=keras.Model(inputs=inputs, outputs=[outputA, outputB])
這個模型有一個輸入層inputs,經過隱藏層h2後,分為hA_1和hB_1兩層,最後的輸出則是outputA和outputB兩個。

多輸入多輸出模型(Multi Input and Output Model):
inputA=keras.Input(shape=(200,))
inputB=keras.Input(shape=(300,))
hA_1=layers.Dense(50)(inputA)
hA_2=layers.Dense(35)(hA_1)
hB_1=layers.Dense(40)(inputB)
concat=layers.Concatenate()([hA_2, hB_1])
outputA=layers.Dense(10)(concat)
outputB=layers.Dense(5)(concat)
outputC=layers.Dense(1)(concat)
model=keras.Model(inputs=[inputA, inputB], outputs=[outputA, outputB,outputC])
這個模型有inputA和inputB兩個輸入,經過隱藏層hA_2和hB_1後,用layers.Concatenate()將兩個層結合,最後的輸出則是outputA、outputB和outputC三個。

今天只是介紹模型如何建立,所以建立層的方法都寫得比較簡單,輸入和輸出也都是一維張量,之後應該會再介紹其他不同的層來建立模型。


上一篇
DAY09 - tf.keras - Functional API介紹 - 1
下一篇
DAY11 - tf.data - Dataset的建立與資料讀取
系列文
AI初見 從零開始的TensorFlow生活30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
andow1198
iT邦新手 4 級 ‧ 2022-05-20 17:32:23

兄弟,我有件事不了解,

代碼為何不放進去這個神奇的地方

而是要打在文章內?

我要留言

立即登入留言