Я слежу за https://www.tensorflow.org/tutorials/keras/basic_classification, чтобы решить задачу Kaggle.
Однако я не понимаю, какие данные мне следует вводить в функцию подбора.
Я разделил тренировочный набор данных на X_train
, y_train
, X_test
и y_test
.X_train
имеет форму (13125, 32, 32, 3)
.
model = keras.Sequential([
keras.layers.Flatten(input_shape=(32, 32, 3)),
keras.layers.Dense(128, activation=tf.nn.relu),
keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(X_train, y_train, epochs=5)
Я получил сообщение об ошибке:
Ошибка при проверке цели модели: список массивов Numpy, передаваемых вашей модели, не соответствует размеру, ожидаемому моделью.Ожидается увидеть 1 массив (ов), но вместо этого получен следующий список из 13125 массивов:
ОБНОВЛЕНИЕ:
# TensorFlow and tf.keras
import tensorflow as tf
from tensorflow import keras
# Helper libraries
import numpy as np
import matplotlib.pyplot as plt
model = keras.Sequential([
keras.layers.Flatten(input_shape=(32,32,3)),
keras.layers.Dense(128, activation=tf.nn.relu),
keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
X_train_stack = np.vstack(X_train)
model.fit(X_train_stack, y_train, epochs=5)
Я получил ошибку:
Ошибка при проверке ввода: ожидалось, что flatten_7_input будет иметь 4 измерения, но получит массив с формой (420000, 32, 3)
#read in training set
train_img = []
train_lb = []
for i in range(len(cactus_label)):
row = cactus_label.iloc[i]
fileName = row['id']
train_lb.append(row['has_cactus'])
path = "../input/train/train/{}".format(fileName)
im = mpimg.imread(path)
train_img.append(im)
X_train, X_test, y_train, y_test = train_test_split(train_img, train_lb)
X_train = np.array(X_train)
X_test = np.array(X_test)