Вот ваш фрейм данных:
| FileName || PicData |
| file1.jpg || [70, 199, 61, 191, 214, 223, 255, 255, 255] |
| file2.jpg || [188, 192, 188, 187, 73, 192, 183, 172, 189] |
У вас есть n образцов и один столбец. Столбец содержит списки, которые содержат все данные пикселей из ваших изображений. Поэтому, когда вы ссылаетесь на значения df.loc [:, "PicData"].., Это только один столбец, поэтому ваш вывод будет n на 1 и список, а не на n на 9 массивов, как требует модель. Вы можете обойти это, сославшись на список и затем извлекая значения, но вы не захотите этого делать, как я объясню ниже. Чтобы решить эту проблему, вы должны поместить все свои данные в кадр данных pandas или массив numpy, где каждая строка является образцом и отдельным столбцом для всех данных пикселей.
| FileName || pixel1, pixel2, pixel3, ..., pixel9 |
| file1.jpg || 70, 199, 61, 191, 214, 223, 255, 255, 255 |
| file2.jpg || 188, 192, 188, 187, 73, 192, 183, 172, 189 |
Есть несколько причин, по которым вы бы не хотели использовать подход списка. Во-первых, Keras требует в качестве входных данных массив numpy. Поэтому, если ваши данные представлены в виде списка, вам все равно придется преобразовать их в массив numpy, прежде чем загружать их в модель, что будет очень медленным, поскольку вам придется делать этот список по списку, строка за строкой , Вот исходный код от Keras для подгонки модели:
def fit(self, x, y, batch_size=32, epochs=10, verbose=1, callbacks=None,
validation_split=0., validation_data=None, shuffle=True,
class_weight=None, sample_weight=None, initial_epoch=0, **kwargs):
"""Trains the model for a fixed number of epochs.
# Arguments
x: input data, as a Numpy array or list of Numpy arrays
(if the model has multiple inputs).
y: labels, as a Numpy array.
Во-вторых, преимущество использования numpy в машинном обучении состоит в том, что numpy эффективно хранит данные для использования в операциях матричной алгебры. Списки не оптимизированы для этой цели, поэтому вы получите гораздо худшую производительность, если попытаетесь выполнить операции таким способом.
Это нормально, чтобы сгладить ваше изображение 256x256 и иметь один столбец для каждого пикселя. Это довольно стандартно, и вы найдете множество примеров, которые помогут вам в этом.
https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html