Первый индекс None
и индекс пакета,
Здесь в следующем примере размер пакета равен 2 (две строки), а длина ввода равна 3
In [12]: ar = [[0,1,2],
...: [2,0,3]]
In [13]: mask = tf.greater(ar, 0)
...: non_zero_array = tf.boolean_mask(ar, mask)
In [14]: non_zero_array.eval(session=sess)
Out[14]: array([1, 2, 2, 3], dtype=int32)
Iхочу вывод [[1,2], [2,3]]
вместо [1,2,2,3]
(это будет форма [Нет, input_length])
Я пытаюсь реализовать функциональность mask_zero
самостоятельно, потому что однажды я дам mask_zero=True
чтобы встроить слой, я не могу передать его в плотный слой (я объединяю другие тензоры и сглаживаю, а затем подаю в плотный слой, Flatten
не принимает mask_zero
)
Ниже я получаюitem_average
, что в среднем составляет prior_ids
, я хочу избавиться от 0
значений из prior_ids
до получения вложений без использования mask_zero=0
selected = self.item_embedding_layer(prior_ids)
embedding_sum = tf.reduce_sum(selected, axis=1)
non_zero_count = tf.cast(tf.math.count_nonzero(prior_ids, axis=1), tf.float32)
item_average = embedding_sum / tf.expand_dims(non_zero_count, axis=1)