解释 - x = tf.Keras.layers.Dense(128, activation='relu')(pretrained_model.output)
Explain - x = tf.Keras.layers.Dense(128, activation='relu')(pretrained_model.output)
谁能详细解释一下这段代码,我不明白突出显示的部分。我的意思是他们为什么放 :
x = tf.Keras.layers.Dense(128, activation='relu')(pretrained_model.output)
Dense()() 后跟另一个括号 wat 可能是原因吗?
完整代码:
inputs = pretrained_model.input
x = tf.keras.layers.Dense(128, activation='relu')(pretrained_model.output)
outputs = tf.keras.layers.Dense(9, activation='softmax')(x)
model = tf.keras.Model(inputs=inputs, outputs=outputs)
model.compile(
optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy']
)
在第一行中,您将 inputs 定义为等于预训练模型的输入。然后定义 x 等于预训练模型输出(在应用额外的密集层之后)。 Tensorflow 现在自动识别 inputs 和 x 是如何连接的。如果我们假设,预训练模型由五层[pretrained_in、pretrained_h_1、pretrained_h_2、pretrained_h_3、pretrained_out]组成,这意味着tensorflow实现了,信息将采用以下方式:
输入 -> pretrained_in -> pretrained_h_1 -> pretrained_h_2 -> pretrained_h_3 -> pretrained_out -> new_dense_layer -> x
如果我们现在考虑最后几层,我们将有以下信息流:
输入 -> pretrained_in -> pretrained_h_1 -> pretrained_h_2 -> pretrained_h_3 -> pretrained_out -> new_dense_layer -> x -> dense_layer_softmax -> 输出
现在“model = tf.keras.Model(inputs=inputs, outputs=outputs)”语句只是告诉tensorflow,它应该把这个信息流当作一个新的模型,这样你就可以很容易地通过仅使用此新模型即可通过所有这些层获得新信息。
编辑:
你问为什么 Dense 后面跟着两个括号。 layers.Dense() 调用实际上不是处理数据的函数。相反,如果您调用 tf.keras.layers.Dense(),tensorflow 基本上会创建一个新的密集层并 returns 它给您,然后您可以使用它来处理数据。您实际上可以将其写成两行以使其更清楚:
dense_layer = layers.Dense(128, activation='relu') # We define a new dense layer
dense_layer_output = dense_layer(pretrained_model.output) # We apply the dense layer to the data
谁能详细解释一下这段代码,我不明白突出显示的部分。我的意思是他们为什么放 :
x = tf.Keras.layers.Dense(128, activation='relu')(pretrained_model.output)
Dense()() 后跟另一个括号 wat 可能是原因吗?
完整代码:
inputs = pretrained_model.input
x = tf.keras.layers.Dense(128, activation='relu')(pretrained_model.output)
outputs = tf.keras.layers.Dense(9, activation='softmax')(x)
model = tf.keras.Model(inputs=inputs, outputs=outputs)
model.compile(
optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy']
)
在第一行中,您将 inputs 定义为等于预训练模型的输入。然后定义 x 等于预训练模型输出(在应用额外的密集层之后)。 Tensorflow 现在自动识别 inputs 和 x 是如何连接的。如果我们假设,预训练模型由五层[pretrained_in、pretrained_h_1、pretrained_h_2、pretrained_h_3、pretrained_out]组成,这意味着tensorflow实现了,信息将采用以下方式:
输入 -> pretrained_in -> pretrained_h_1 -> pretrained_h_2 -> pretrained_h_3 -> pretrained_out -> new_dense_layer -> x
如果我们现在考虑最后几层,我们将有以下信息流:
输入 -> pretrained_in -> pretrained_h_1 -> pretrained_h_2 -> pretrained_h_3 -> pretrained_out -> new_dense_layer -> x -> dense_layer_softmax -> 输出
现在“model = tf.keras.Model(inputs=inputs, outputs=outputs)”语句只是告诉tensorflow,它应该把这个信息流当作一个新的模型,这样你就可以很容易地通过仅使用此新模型即可通过所有这些层获得新信息。
编辑: 你问为什么 Dense 后面跟着两个括号。 layers.Dense() 调用实际上不是处理数据的函数。相反,如果您调用 tf.keras.layers.Dense(),tensorflow 基本上会创建一个新的密集层并 returns 它给您,然后您可以使用它来处理数据。您实际上可以将其写成两行以使其更清楚:
dense_layer = layers.Dense(128, activation='relu') # We define a new dense layer
dense_layer_output = dense_layer(pretrained_model.output) # We apply the dense layer to the data