У меня есть несколько вопросов о мини-партии.
Предположим, у нас есть два кода, как показано ниже
Первый код:
def custom():
b = tf.convert_to_tensor([0], dtype=tf.float32)
def cross_entropy(y_true, y_pred):
for i in range(0,7):
a = K.categorical_crossentropy(y_true[:,i,:], y_pred[:,i,;])
b = b + a
return b
return cross_entropy
Второй код:
def custom():
b = tf.convert_to_tensor([0], dtype=tf.float32)
c = tf.convert_to_tensor([0], dtype=tf.float32)
def cross_entropy(y_true, y_pred):
for i in range(0,7):
g = tf.reduce_sum(y_true[:,l,:],axis=-1)
g = tf.reduce_sum(g, axis=0)
a = K.categorical_crossentropy(y_true[:,i,:], y_pred[:,i,;])
b = b + K.sum(a)
c = c + g
return b/c
return cross_entropy
Как я понимаю, первый код вычисляет сумму потерь (не сумму партии, а некоторый индекс i). Затем они усредняют потери для всей партии, но более поздний процесс работает в бэкэнде и не показывается в этом коде.
Второй код вычисляет потери как первый, но код, очевидно, усредняет потери для партии размер. И затем они пытаются усреднить потери для всей партии снова в бэкэнде.
Есть ли какая-то ошибка в моем понимании?
Пожалуйста, дайте мне знать