如何使用Keras预处理.具有多输入模型和数据集的规范化层



Keras预处理的所有文档似乎都假设了一个Input。如果您有一个带有多个Input的型号:

x_norm = preprocessing.Normalization()
y_norm = preprocessing.Normalization()
x = layers.Input(shape=(1,))
x = x_norm(x)
y = layers.Input(shape=(1,))
y = y_norm(y)
concated = layers.Concatenate()([x, y])
output = layers.Dense(1)(concated)
model = keras.Model(inputs=[x, y], outputs=output)

尚不清楚如何在CCD_ 4上使用CCD_;列车";每个预处理层(即x_normy_norm(。使用单个Input和预处理层(例如preprocessing_layer(,您只需执行以下操作:

preprocessing_layer.adapt(dataset)

但是,在多个输入的情况下,我如何选择正确的输入功能在adapt()中使用?

到目前为止,我想到的最好的是:

normalization_layers = {
'x': preprocessing.Normalization(),
'y': preprocessing.Normalization(),
}
for batch in dataset:
for name, layer in normalization_layers.items():
layer.adapt(batch[0][name])

我不知道这是否有效,TensorFlow会发出关于循环中调用tf.function(在adapt()内部(的警告。

相关内容

最新更新