Надеюсь, что кто-то может помочь мне с этим или указать мне подсказку / идеи, которые я могу исправить эту ошибку.
Я пытаюсь создать пользовательский слой в модели SeqtoSeq. Мне нужно вызвать гистограмму в части моего кода. однако, когда он касается этой строки кода, возникает ошибка:
ValueError: Outputs of true_fn and false_fn must have the same type: int32, float32
это мой код для слоя:
class entropy_measure(Layer):
def __init__(self, beta,batch, **kwargs):
self.beta = beta
self.batch = batch
self.uses_learning_phase = True
self.supports_masking = True
super(entropy_measure, self).__init__(**kwargs)
def call(self, x):
return K.in_train_phase(self.rev_entropy(x, self.beta,self.batch), x)
def get_config(self):
config = {'beta': self.beta}
base_config = super(entropy_measure, self).get_config()
return dict(list(base_config.items()) + list(config.items()))
def rev_entropy(self, x, beta,batch):
value_ranges = [0.0, 10.0]
nbins = 5
converted_x = tf.cast(x,tf.float32)
new_f_w_t = tf.histogram_fixed_width_bins(converted_x, value_ranges, nbins)
return new_f_w_t
Я называю этот слой используя:
encoded = entropy_measure(beta=0.08,batch=BATCH_SIZE)(encoded)
Этот код написан с помощью keras tenorflow backend.
Есть идеи, что является причиной ошибки?