Я тестирую tf.keras с помощью tf.data, поэтому могу оптимизировать мини-пакеты. Я использую набор данных MNIST и запускаю код в Google Colab. Однако, когда я пытаюсь обучить сеть, я всегда получаю эту ошибку:
ValueError: Error when checking input: expected dense_18_input to have shape (784,) but got array with shape (1,)
. Вот мой код:
import tensorflow as tf
from tensorflow.keras import layers
import numpy as np
import pandas as pd
!git clone https://github.com/DanorRon/my_repo
%cd my_repo
!ls
batch_size = 100
epochs = 10
alpha = 0.01
lambda_ = 0.01
h1 = 50
train = pd.read_csv('/content/sample_data/my_repo/mnist_train.csv.zip')
test = pd.read_csv('/content/sample_data/my_repo/mnist_test.csv.zip')
x_train = train.loc[:, '1x1':'28x28']
y_train = train.loc[:, 'label']
x_test = test.loc[:, '1x1':'28x28']
y_test = test.loc[:, 'label']
Train = tf.data.Dataset.from_tensor_slices((x_train, y_train))
Train.batch(batch_size).repeat(10).shuffle(1000)
model = tf.keras.Sequential()
model.add(layers.Dense(784, input_shape=(784,)))
model.add(layers.Dense(h1, activation='relu', kernel_regularizer=tf.keras.regularizers.l2(0.01)))
model.add(layers.Dense(10, activation='softmax', kernel_regularizer=tf.keras.regularizers.l2(0.01)))
model.compile(optimizer=tf.train.AdamOptimizer(alpha),
loss = 'categorical_crossentropy',
metrics = ['accuracy'])
model.fit(Train, epochs=epochs, steps_per_epoch=600)
Я не знаю, в чем проблема. Я думаю, что мои размеры правильны, и я не вижу никаких других проблем. Как мне решить эту проблему?
Edit: я посмотрел больше / проверенных вещей, чтобы найти ответ, но я не могу найти ничего, что работает. Я понятия не имею, в чем может быть проблема.