iT邦幫忙

0

Tensorflow語法問題

inputs = tf.keras.Input(shape=(10,))
x = tf.keras.layers.Dense(10)(inputs)
outputs = tf.keras.layers.Dense(1)(x)
model = tf.keras.Model(inputs, outputs)
# Actvity regularization.
model.add_loss(tf.abs(tf.reduce_mean(x)))

最近初學TF不太懂
tf.keras.layers.Dense(10)(inputs)
tf.keras.layers.Dense(1)(x)
為什麼後面需要兩個括號
也不知道該用甚麼關鍵字搜尋

請大家麻煩解答了 謝謝><

我猜
inputs = tf.keras.Input(shape=(10,))
x = tf.keras.layers.Dense(10)(inputs)

所以
tf.keras.layers.Dense(10)(inputs)
=
tf.keras.layers.Dense(10,inputs_shape=(10,) )

參考
https://keras.io/zh/layers/core/
fysh711426 iT邦研究生 2 級 ‧ 2019-12-12 22:23:38 檢舉
https://medium.com/@ywchen88/keras-syntax-f-x-python%E7%9A%84-call-1b6fcb7e8e3a
__call__ 函數,可以讓物件像函數一樣呼叫。

找了 Dense 原始碼給你參考
https://github.com/keras-team/keras/blob/master/keras/layers/core.py/#L765

1 個回答

1
I code so I am
iT邦研究生 5 級 ‧ 2019-12-13 10:35:00
最佳解答

這是 Function Programming 的概念,Python 允許函數(x)當作參數傳遞,之後在被呼叫的函數中會呼叫該函數(x)。

該段程式是一般 keras Function API的寫法,即 input --> x --> output 三層的神經網路模型,可參考 Keras官方文件,也可以參考拙著

我要發表回答

立即登入回答