Обучение с использованием tf.Dataset в TensorFlow 2.0 - PullRequest
2 голосов
/ 02 ноября 2019

Мне трудно тренировать мою модель TensorFlow, используя tf.Dataset, а не, скажем, pd.DataFrame (который работает нормально).

Ниже я создал фиктивный пример, который я ожидал бы, учитывая то, что я прочитал онлайн / на веб-сайте TensorFlow .

!pip install tensorflow==2.0.0 > /dev/null

import numpy as np
import tensorflow as tf

features, target = np.random.rand(100, 30), np.random.randint(0, 2, 100)
dataset = tf.data.Dataset.from_tensor_slices((features, target))

model = tf.keras.Sequential([
    tf.keras.layers.Dense(30, activation='relu', input_shape=(30,)),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.Dropout(0.5),

    tf.keras.layers.Dense(30, activation='relu'),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.Dropout(0.5),

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

model.compile(
    optimizer='adam',
    loss='binary_crossentropy',
    metrics=['accuracy']
)

model.fit(
    dataset, 
    epochs=10,
)

, который возвращает следующеесообщение об ошибке

...

ValueError: Error when checking input: expected dense_input to have shape (30,) but got array with shape (1,)

Что-то явно не так в вышеприведенном? Почему TensorFlow захватывает вход с формой (1,)?

1 Ответ

1 голос
/ 02 ноября 2019

Попробуйте использовать tf.data.Dataset.from_tensors вместо tf.data.Dataset.from_tensor_slices

Разница объясняется здесь: https://stackoverflow.com/a/55370549/10418812

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...