Как я могу реализовать эту пользовательскую функцию потерь в Keras? ⇐ Python
Как я могу реализовать эту пользовательскую функцию потерь в Keras?
Я пытаюсь реализовать собственную функцию потерь в своей нейронной сети, которая выглядела бы так, если бы тензоры были вместо этого пустыми массивами:
def custom_loss(y_true, y_pred): активирован = y_pred[y_true > 1] return np.abs(activated.mean() - активированный.std())/активированный.std() y имеют форму (batch_size, 1); то есть это скалярный вывод для каждой входной строки.
obs: этот пост (Преобразование Tensor в np.array с использованием K.eval() в Keras возвращает InvalidArgumentError) дал мне начальное направление, по которому двигаться дальше.
Изменить:
Это воспроизводимая настройка, к которой я пытаюсь применить пользовательскую функцию потерь:
импортировать numpy как np импортировать тензорный поток как tf из тензорного потока импорта кераса из слоев импорта tensorflow.keras X = np.random.normal(0, 1, (256, 5)) Y = np.random.normal(0, 1, (256, 1)) модель = keras.Sequential([ слои.Плотный(1), ]) model.compile(optimizer='adam', loss=custom_loss) model.fit(X, Y) .fit() в последней строке выдает ошибку AttributeError: объект «Tensor» не имеет атрибута «mean», если я определяю custom_loss< /code> как указано выше в моем вопросе.
Я пытаюсь реализовать собственную функцию потерь в своей нейронной сети, которая выглядела бы так, если бы тензоры были вместо этого пустыми массивами:
def custom_loss(y_true, y_pred): активирован = y_pred[y_true > 1] return np.abs(activated.mean() - активированный.std())/активированный.std() y имеют форму (batch_size, 1); то есть это скалярный вывод для каждой входной строки.
obs: этот пост (Преобразование Tensor в np.array с использованием K.eval() в Keras возвращает InvalidArgumentError) дал мне начальное направление, по которому двигаться дальше.
Изменить:
Это воспроизводимая настройка, к которой я пытаюсь применить пользовательскую функцию потерь:
импортировать numpy как np импортировать тензорный поток как tf из тензорного потока импорта кераса из слоев импорта tensorflow.keras X = np.random.normal(0, 1, (256, 5)) Y = np.random.normal(0, 1, (256, 1)) модель = keras.Sequential([ слои.Плотный(1), ]) model.compile(optimizer='adam', loss=custom_loss) model.fit(X, Y) .fit() в последней строке выдает ошибку AttributeError: объект «Tensor» не имеет атрибута «mean», если я определяю custom_loss< /code> как указано выше в моем вопросе.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение