Я использую Keras для сегментирования изображений с несколькими регионами, одна наземная правда содержит (12области: фон, дорога, велосипед, ...). Как вы можете себе представить, процент велосипедных пикселей намного ниже, чем фоновых пикселей. Следовательно, я хочу использовать выборочные веса, чтобы назначить большое значение, используя sample_weight для фона. мой набор данных содержит изображения и связанные с ними наземные истины.
для извлечения региона я сделал этот код:
Y_train[Y_train == 0] = 0
Y_train[Y_train == 56] = 2
Y_train[Y_train == 137] = 5
Y_train[Y_train == 26] = 1
Y_train[Y_train == 255] = 11
Y_train[Y_train == 87] = 3
Y_train[Y_train == 112] = 4
Y_train[Y_train == 164] = 6
Y_train[Y_train == 191] = 7
Y_train[Y_train == 212] = 8
Y_train[Y_train == 229] = 9
Y_train[Y_train == 244] = 10
Таким образом, основываясь на уровне серого пикселя земной правды. Я назначаю каждый регион классу от 0 до 11. Затем я использовал для своей модели слой softmax для классификации каждого региона.
Я пробовал это решение здесь , как показано ниже:
sample_weights = np.zeros((len(Y_train),82944))
sample_weights[Y_train[Y_train==0]] = 7
sample_weights[Y_train[Y_train==1]] = 10
sample_weights[Y_train[Y_train==2]] = 2
sample_weights[Y_train[Y_train==3]] = 3
sample_weights[Y_train[Y_train==4]] = 4
sample_weights[Y_train[Y_train==5]] = 5
sample_weights[Y_train[Y_train==6]] = 6
sample_weights[Y_train[Y_train==7]] = 50
sample_weights[Y_train[Y_train==8]] = 8
sample_weights[Y_train[Y_train==9]] = 9
sample_weights[Y_train[Y_train==10]] = 50
sample_weights[Y_train[Y_train==11]] = 11
Так что я подразумеваю под этим решением, что каждый пиксель в моей метке (от 0 до 11) будет иметь значение (вес) и будет передан в массив sample_weights. Я не знаю, если это правильный путь ..
, тогда я кормил свою модель
history = model.fit(X_train, Y_train, validation_split=0.18, batch_size=1,epochs = 60 ,sample_weight=sample_weights)
но я получаю ошибку,
ValueError: Found a sample_weight array with shape (481,). In order to use timestep-wise sample weighting, you should pass a 2D sample_weight array.
Любое другое предложение будет оценено.