Я получаю следующее сообщение об ошибке Keras Value, когда пытаюсь обучить свою модель.
ValueError: Ошибка при проверке цели модели: список массивов Numpy, которые вы передаете своей модели, не являетсяРазмер ожидаемой модели. Ожидается увидеть 1 массив (ов), но вместо этого я получил следующий список из 14 массивов:
[array([['0'],
['0'],
['0'],
['0'],
['0'],
['0'],
['0'],
['0'],
['1'],
['0'],
['0'],
['0'],
['0'],
['0'],
...
Когда я пытаюсь изменить форму y_col, используя:
y_col = np.stack( y_col, axis=0 )
, я получаю:
TypeError: If class_mode="multi_output", y_col must be a list. Received ndarray.
, если я просто пытаюсь сделать это с
y_col = np.array(y_col)
Я получаю ту же ошибку.
Фрейм данных:
Path black grey green blue etc....
0 12345.jpg 1 0 1 0
1 12345.jpg 0 0 1 0
2 12345.jpg 1 0 0 1
3 12345.jpg 0 1 0 1
4 12345.jpg 0 0 1 1
5 12345.jpg 0 0 1 1
Модель для каждого изображения должна представлять собой один массив из 14 элементов [0,0,1,1,0,1,0, ...], но, похоже, вы передаете 14 разных массивов для каждого изображения.
Проблема возникает в сети CNN, которая распознает цвета продуктов (одежды). Один продукт может иметь более одного цвета, например [0.0,0,1,0,1,0,0,1]
изначально y_col выглядит:
['beige',
'black',
'blue',
'brown',
'gray',
'green',
'multicolor',
'orange',
'pink',
'red',
'violet',
'white',
'yellow',
'transparent']
генератор:
def get_generator(filename, number=None):
#
df = pd.read_csv(filename, delimiter=' ', names=color_list, dtype="str")
if number:
df = df[:number]
#
gen = image.ImageDataGenerator()
#
directory = os.path.dirname(filename)
#
return gen.flow_from_dataframe(df, directory, "path", y_col = y_col , target_size=(224, 224), batch_size=32,class_mode="multi_output")