嘗試創建一個簡單的 keras 模型,其中模型的輸出是輸入乘以密集層元素。
inputs = tf.keras.Input(shape=256)
weightLayer = tf.keras.layers.Dense(256)
multipled = tf.keras.layers.Dot(axes=1)([inputs,weightLayer])
model = tf.keras.Model(inputs, multipled)
但是,這給了我“Nonetype object is not subscriptable”錯誤。我假設這是因為 Dot 圖層的輸入形狀面臨問題?我該如何解決這個問題?
uj5u.com熱心網友回復:
該Dense層必須接收某種輸入:
import tensorflow as tf
inputs = tf.keras.layers.Input(shape=256)
weightLayer = tf.keras.layers.Dense(256)
multipled = tf.keras.layers.Dot(axes=1)([inputs, weightLayer(inputs)])
model = tf.keras.Model(inputs, multipled)
否則,只需定義一個權重矩陣并將其與您的輸入元素相乘。例如,通過使用自定義層:
import tensorflow as tf
class WeightedLayer(tf.keras.layers.Layer):
def __init__(self, num_outputs):
super(WeightedLayer, self).__init__()
self.num_outputs = num_outputs
self.dot_layer = tf.keras.layers.Dot(axes=1)
def build(self, input_shape):
self.kernel = self.add_weight("kernel",
shape=[int(input_shape[-1]),
self.num_outputs])
def call(self, inputs):
return self.dot_layer([inputs, self.kernel])
inputs = tf.keras.layers.Input(shape=256)
weighted_layer = WeightedLayer(256)
multipled = weighted_layer(inputs)
model = tf.keras.Model(inputs, multipled)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/453221.html
上一篇:如何在tf.data.TextLineDataset上應用tf.keras.preprocessing.text.Tokenizer?
