Я создаю авто-кодировщик и хочу закодировать свои значения в логическую матрицу.Однако, когда я использую свою функцию активации пользовательского шага в одном из промежуточных слоев (все другие слои используют 'relu'), keras вызывает эту ошибку:
An operation has `None` for gradient.
Я пытался использовать hard-sigmoid функция, но она не подходит для моей проблемы, потому что она все еще выдает промежуточные значения, когда мне нужен только двоичный файл.Я знаю, что в большинстве точек моя функция не имеет градиента, но возможно ли использовать какую-то другую функцию для расчета градиента и все еще использовать функцию шага для вычисления точности и потерь?
Моя функция активации:
def binary_activation(x):
ones = tf.ones(tf.shape(x), dtype=x.dtype.base_dtype)
zeros = tf.zeros(tf.shape(x), dtype=x.dtype.base_dtype)
return keras.backend.switch(x > 0.5, ones, zeros)
Я ожидаю, что смогу использовать двоичную пошаговую функцию активации для обучения сети, а затем использовать ее в качестве типичного авто-кодировщика.Что-то похожее на двоичную карту характеристик, используемую в этой статье .