Я пытаюсь преобразовать массивы numpy в tf.data.Dataset
, используя следующий код:
train_dataset = tf.data.Dataset.from_tensor_slices((traininput, train[:, :, :, 1:4]))
Однако в моем наборе данных отсутствует первое измерение. Массивы numpy имеют форму 1000, 128, 128, 3, а набор данных уменьшается до формы 128, 128, 3. Это приводит к ошибке при попытке обучить мою модель: Ошибка при проверке ввода: expected input_2 to have 4 dimensions, but got array with shape (128, 128, 3)
Я пытался работать в соответствии с руководством по тензорному потоку при загрузке numpy данных . Почему это происходит и как я могу это исправить?
Как и предполагалось, я предоставляю mcve ниже:
import tensorflow as tf
import numpy as np
inp = np.random.rand(100, 128, 128, 3)
out = np.random.rand(100, 126, 126, 3)
model = tf.keras.Sequential(
[
tf.keras.layers.InputLayer(input_shape=(128, 128, 3)),
tf.keras.layers.Conv2D(
filters=32, kernel_size=3, strides=(2, 2), activation='relu'),
tf.keras.layers.Conv2DTranspose(
filters=3,
kernel_size=3,
strides=(2, 2),
padding="SAME",
activation='relu'),
]
)
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
train_dataset = tf.data.Dataset.from_tensor_slices((inp, out))
model_history = model.fit(train_dataset, epochs=10)
Он заканчивается: Error when checking input: expected input_1 to have 4 dimensions, but got array with shape (128, 128, 3)