Nano Hash - криптовалюты, майнинг, программирование

пользовательская функция потерь tensorflow с дополнительными входными данными

Я пытаюсь построить собственную функцию потерь для последовательной модели. В этой функции потерь y_true и y_pred используются для вычисления ошибки. Когда я пытаюсь заменить тензор y_true, поэтому все истинные значения из модели внешними истинными значениями, которые должны быть одинаковыми, я получаю разные результаты (примерно половину ожидаемых значений). Чтобы было понятнее, вот часть моего кода, который работает:

import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import tensorflow as tf
from tensorflow import keras

def custom_loss(y_true, y_pred):
    loss = tf.square(y_pred - y_true) + tf.square(y_pred - y_true)
return loss

model = Sequential()
model.add(Dense(5, input_dim=4, activation='tanh', use_bias=True)) # 1
model.add(Dense(5, activation='tanh')) # 2
model.add(Dense(5, activation='tanh')) # 3
model.add(Dense(5, activation='tanh')) # 4
model.add(Dense(5, activation='tanh')) # 5
model.add(Dense(1))
model.compile(loss=custom_loss, optimizer='adam', metrics=['accuracy'])

Когда я сейчас пытаюсь заменить одну из y_true внешней переменной, преобразованной в тензор, я не получаю тех же результатов. input_scaled - это тот же массив numpy, который также используется в model.fit, поэтому я ожидал, что эти две пользовательские функции потерь будут давать одинаковый результат.

input_as_tensor = tf.convert_to_tensor(np.float32(input_scaled))

def custom_loss(y_true, y_pred):
    loss = tf.square(y_pred - y_true) + tf.square(y_pred - input_as_tensor)
return loss

# ...as above...
hist = model.fit(input_to_fit, input_scaled, epochs=300, callbacks=[tensorboard_callback], validation_split=0.2)

Я использую версию TensorFlow: 2.0.0. Любая идея объяснить разницу будет оценена.

Изменить: Я обнаружил, что Keras обрабатывает мои входные данные со стандартным размером пакета 32, и поэтому существует несоответствие размеров между моим input_as_tensor и y_true, который имеет другой размер. Мне нужно выяснить, как вычесть правильные значения из моего input_as_tensor.


Ответы:


1

Если вы не установите начальное значение для модели, вы никогда не получите тот же результат, даже если вы используете тот же код и те же данные.

21.02.2020
  • Это ясно, но когда я запускаю свой код десять раз и всегда получаю аналогичный результат, я называю это своим правильным результатом. Затем я изменил код, как описано выше, где, на мой взгляд, должны происходить те же вычисления, но мои результаты всегда составляют примерно половину значений, чем раньше. 22.02.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..