首页 > 解决方案 > Tensorflow 数据集 Titanic 导入问题

问题描述

我不知道如何导入 Tensorflow 2 的内置数据集。他们的文档不是很直观,我习惯使用 csvs。

如何让“泰坦尼克号”数据集与基本模型一起使用?有没有很好的资源来学习 Tensorflow 的 API 来流水线化他们的数据集?

对于下面的代码,我得到错误: ValueError: Layersequential_54 expects 1 个输入,但它收到了 13 个输入张量

import tensorflow as tf
import tensorflow_datasets as tfds
from tensorflow.keras.optimizers import Adam

data = tfds.load("titanic",split='train', as_supervised=True).map(lambda x,y: (x,y)).batch(10)


model = tf.keras.models.Sequential([tf.keras.layers.Dense(2,activation='relu'),
tf.keras.layers.Dense(13, activation='relu'),
tf.keras.layers.Dense(1, activation='sigmoid')])

model.compile(optimizer=Adam(learning_rate=0.01), loss='categorical_crossentropy', metrics=
['accuracy'])

model.fit(data,epochs=30)

标签: pythontensorflowtensorflow2.0tensorflow-datasets

解决方案


数据的导入似乎是正确的,但是您使用categorical_crossentropy的自然需要 one-hot 编码标签(目标),可以使用以下方法生成:

from keras.utils import to_categorical

labels = to_categorical(labels)

但是对于两类(二进制)问题,您需要使用binary_crossentropy并且仍然可以维护您的dense层:

tf.keras.layers.Dense(1, activation='sigmoid')])

最后,您需要在此处添加标签(目标)来训练网络并可能添加批量大小

model.fit(data, labels, epochs=30, batch_size=80)

推荐阅读