如何合并特征张量适配TensorFlow模型?泰坦尼克数据集实操疑问
解决Titanic数据集特征张量合并问题的方案
我明白你现在的困扰——想把Titanic数据集中的多个特征张量合并成适合模型训练的输入,之前尝试concat和stack没成功对吧?咱们先理清楚问题所在:你之前是把全量数据batch后单独提取age和fare张量,这种方式不仅低效,还没把每个样本的两个特征对应起来,自然没法让模型接收多特征输入。咱们调整一下数据处理逻辑,一步一步解决:
为什么之前的合并尝试失败?
你拿到的xx1和xx2是形状为(1309,)的一维张量,如果直接用tf.concat([xx1, xx2], axis=0),会得到一个(2618,)的一维张量,这不是我们要的;如果想按样本拼接成(1309, 2)的特征矩阵,得先把每个特征扩展成二维(比如(1309,1)),再在特征维度上拼接。
正确的解决方案:在预处理阶段合并特征
我们应该在tf.data的map阶段就完成特征合并,这样整个数据集会直接输出(合并特征,标签)的格式,完美适配模型训练:
1. 完整修改后的代码
import tensorflow as tf import tensorflow_datasets as tfds from tensorflow.keras.optimizers import Adam # 定义预处理函数:合并特征+处理标签 def preprocess(x, y): # 把每个一维特征扩展成二维(shape从(,)变成(1,)) age_feature = tf.expand_dims(x['age'], axis=-1) fare_feature = tf.expand_dims(x['fare'], axis=-1) # 在特征维度拼接,得到每个样本的特征向量(2,) combined_features = tf.concat([age_feature, fare_feature], axis=-1) # 把标签转换成one-hot格式(如果用稀疏交叉熵可以跳过这步) one_hot_label = tf.one_hot(y, depth=2) return combined_features, one_hot_label # 加载数据并完成预处理 data = tfds.load("titanic", split='train', as_supervised=True)\ .map(preprocess)\ .batch(32) # 用小批量训练,比全量训练稳定性更好 .prefetch(tf.data.AUTOTUNE) # 自动预取优化训练速度 # 定义模型:第一层指定输入特征数为2 model = tf.keras.models.Sequential([ tf.keras.layers.Dense(13, activation='relu', input_shape=(2,)), tf.keras.layers.Dense(2, activation='softmax') ]) # 编译模型 model.compile( optimizer=Adam(learning_rate=0.01), loss='categorical_crossentropy', metrics=['accuracy'] ) # 直接训练 model.fit(data, epochs=30)
2. 额外优化建议
- 简化标签处理:如果你不想手动转one-hot,可以改用
SparseCategoricalCrossentropy损失函数,直接用原始的0/1标签,代码更简洁:def preprocess(x, y): age_feature = tf.expand_dims(x['age'], axis=-1) fare_feature = tf.expand_dims(x['fare'], axis=-1) combined_features = tf.concat([age_feature, fare_feature], axis=-1) return combined_features, y # 直接返回原始标签 model.compile( optimizer=Adam(learning_rate=0.01), loss=tf.keras.losses.SparseCategoricalCrossentropy(), metrics=['accuracy'] ) - 避免全量batch:不要一次性用1309条数据做batch,小批量(比如32、64)训练的收敛效果和稳定性会好很多。
这样修改后,你就能让模型接收合并后的多特征张量,顺利进行训练啦~
内容的提问来源于stack exchange,提问作者AI-Lottery Winner
相关产品推荐
相关产品推荐

