【问题标题】:Tensorflow Dataset Titanic import problemsTensorflow 数据集 Titanic 导入问题
【发布时间】:2020-08-05 09:13:13
【问题描述】:

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

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

对于下面的代码,我得到了错误:ValueError: Layersequential_54 需要 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)

【问题讨论】:

    标签: python tensorflow tensorflow2.0 tensorflow-datasets


    【解决方案1】:

    数据的导入似乎是正确的,但是您使用的是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)
    

    【讨论】:

    • 这不适用于这个 tensorflow 数据集。感谢您的尝试。
    • 我的错。您需要改用binary_crossentropy,因为这是一个两类(二进制)问题
    • 我很感激,但这并没有正确导入数据集。就像你不能那样分开它。如果你尝试一下,你会看到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    • 2018-10-03
    • 2020-03-20
    • 2021-04-28
    • 1970-01-01
    • 2019-04-29
    相关资源
    最近更新 更多