Проблемы с импортом набора данных Tensorflow Titani c - PullRequest
0 голосов
/ 05 августа 2020

Я не понимаю, как импортировать встроенные наборы данных Tensorflow 2. Их документация не очень интуитивно понятна, и я привык работать с csvs.

Как мне заставить набор данных Titani c работать с моделью basi c? есть ли хороший ресурс для изучения API Tensorflow для конвейерной обработки их наборов данных?

для приведенного ниже кода я получаю сообщение об ошибке: ValueError: Layer sequence_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)

1 Ответ

0 голосов
/ 05 августа 2020

Импорт данных кажется правильным, но вы используете categorical_crossentropy, для которого, естественно, требуются горячие закодированные метки (цели), которые можно сгенерировать с помощью:

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)
...