You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多个输入与embedding合并后接入自编码器的单一输入层

解决方法

错误原因

你当前的问题是额外定义了独立的input_layer,将前序的多输入embedding分支和自编码器拆成了两个互不连通的计算图,自然无法对接。不需要单独新增中间输入层,直接把拼接后的张量merge_models作为编码器的输入即可。

修改后的代码

你只需要调整自编码器部分的代码即可,前序的输入定义、embedding构建、特征拼接逻辑保持不变:

merge_models = tf.keras.layers.concatenate(models)

# 删掉原代码中额外定义的input_layer,直接用拼接结果作为编码器输入
# Encoder
encoder = Dense(16, activation='relu')(merge_models)
encoder = Dense(8, activation='relu')(encoder)
encoder = Dense(4, activation='relu')(encoder)

# Bottleneck
z = Dense(2, activation='relu')(encoder)

# Decoder
decoder = Dense(4, activation='relu')(z)
decoder = Dense(8, activation='relu')(decoder)
decoder = Dense(16, activation='relu')(decoder)
input_dim = merge_models.shape[1]
decoder = Dense(input_dim, activation='elu')(decoder) 

# 实例化模型时,输入用你最开始收集的所有原始输入节点列表inputs即可
from tensorflow.keras.models import Model
autoencoder = Model(inputs = inputs, 
                    outputs = decoder,
                    name = 'ae_toy_example')

注意事项

Keras函数式API基于张量的计算流构建完整网络,你最开始收集到inputs列表里的所有原始输入(数值特征输入、二分类特征输入、各分类特征的embedding输入)就是整个模型的输入节点,计算流从这些节点出发,经过embedding、拼接、编码、解码最终输出重构结果,所以实例化模型时直接传入inputs列表即可。
训练模型时,喂入的输入数据顺序要和inputs列表里的节点顺序完全对应:即顺序为「数值特征数组、二分类特征数组、第一个待embedding列的数组、第二个待embedding列的数组……」。

内容的提问来源于stack exchange,提问作者Stu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:27:00