Мне нужно создать пользовательскую функцию категориальной кросс-энтропийной потери, в которой я должен сравнивать y_true
и Q*y_pred
вместо просто y_pred
. Q
- это матрица.
Проблема в том, что размер партии не должен быть равен 1
. Итак, есть проблема с размерами.
Как построить функцию категориальной кросс-энтропийной потери, которая работает с batch_size=200
?
Например, это пользовательская функция категориальной кросс-энтропийной потери, которая работает правильно, но для batch_size = 1
.
У меня есть 3 класса, поэтому форма y_pred
равна (batch_size, 3, 1)
, а форма Q
равна (3,3).
Я также попытался передать многомерный массив NumPy с помощью shape = (batch_size, 3, 3)
, но он не сработал.
Q=np.matrix([[0, 0.7,0.2], [0,0,0.8],[1,0.3,0]])
def alpha_loss(y_true, y_pred):
return K.categorical_crossentropy(y_true,K.dot(tf.convert_to_tensor(Q,dtype=tf.float32 ),K.reshape(y_pred,(3,1)) ))