У меня есть такая функция для создания маски (из расслабленного распределения Бернулли).
# Using tensorflow 2.0.0, keras 2.3.1
def get_mask(inputs, units, px, ph):
input_shape = K.shape(inputs)
B = input_shape[0]
D = input_shape[2]
t = 1e-1
eps = K.epsilon()
ux = K.random_uniform((4, B, D))
uh = K.random_uniform((4, B, units))
zx = (1-K.sigmoid((K.log(px+eps) - K.log(1-px+eps) + K.log(ux+eps) - K.log(1-ux+eps)) / t))/(1-px)
zh = (1-K.sigmoid((K.log(ph+eps) - K.log(1-ph+eps) + K.log(uh+eps) - K.log(1-uh+eps)) / t))/(1-ph)
return zx, xh
Во второй строке, где я рисую выборки из равномерного распределения ValueError: Duplicate node name in graph: 'time_distributed_29/random_uniform/shape'
.
Почему он создает имя узла таким образом, и как я могу избежать этого?
До этого я пытался создать некоторые другие тензоры из K.random_uniform, например K.random_uniform((1, 2, 3))
, но они не вызывали эту проблему .