我想规范化许多输入特征。在 TensorFlow 教程中,他们建议使用为每个特征创建一个输入 + 归一化层的函数,并将结果连接起来。
cf get_normalization_layer 在这个链接
我相信当我们有许多数字输入特征时,首先连接所有输入然后应用归一化层会更有效。这是我尝试做的。我失败了,因为似乎串联不允许在许多输入和单个规范化之间建立“链接”。
我在 kaggle 上的某个地方看到过具有这种结构的代码(我记得作者确实提供了网络结构的图像),但我再也找不到它了。所以我被困在这里。
到目前为止,我的代码如下所示:
idxNumericFeatures=df_train.dtypes == 'float64'
numericFeaturesNames=df_train.columns[idxNumericFeatures]
for col in numericFeaturesNames:
input_col2 = tf.keras.Input(shape=(1,), name=col)
all_input_features2.append(input_col2)
all_input_features2_concat = tf.keras.layers.concatenate(all_input_features2)
normalizer = tf.keras.layers.Normalization(axis=None)(all_input_features2_concat)
feature_ds = ds_train.map(lambda x, y: tf.concat([x[name] for name in numericFeaturesNames],axis=0))
# second problem: adapt only works if the object is creatated alone (i.e. without chaining it to other layer)
#normalizer.adapt(feature_ds)
model2=tf.keras.Model(all_inputs2,normalizer)
错误消息是“ V ValueError: Graph disconnected: cannot get value for tensor KerasTensor(type_spec=TensorSpec(shape=(None, 1), dtype=tf.float32, name='radius_mean'), name='radius_mean', description ="created by layer 'radius_mean'") at layer "concatenate_26". 以下之前的图层可以正常访问:[]"
我也无法调整我的规范化层。
你能帮我解决这个问题吗?任何帮助或相关代码的链接将不胜感激......