Как рассчитать минимум всех разностей вложения двух признаков в тензорный поток? - PullRequest
0 голосов
/ 26 февраля 2019

Мы реализуем центральные потери, поэтому у нас есть две формулы для реализации, такие как:

Положительная разность всех центров с:

enter image description here

, который реализован следующим образом:

        num_features = embedding.get_shape()[1]
        centroids = tf.get_variable('c',shape=[num_classes,num_features],
                            dtype=tf.float32,initializer=tf.contrib.layers.xavier_initializer(),trainable=False)
        centroids_delta = tf.get_variable('centroidsUpdateTempVariable',shape=[num_classes,num_features],dtype=tf.float32,
                            initializer=tf.zeros_initializer(),trainable=False)


        centroids_batch = tf.gather(centroids,labels)

        cLoss = tf.nn.l2_loss(embedding - centroids_batch) / float(batch_size) # Eq. 2

        diff = centroids_batch - embedding


        delta_c_nominator = tf.scatter_add(centroids_delta, labels, diff)

        indices = tf.expand_dims(labels,-1)
        updates = tf.constant(value=1,shape=[indices.get_shape()[0]],dtype=tf.float32)
        shape = tf.constant([num_classes])
        labels_sum = tf.expand_dims(tf.scatter_nd(indices, updates, shape),-1)


        centroids = centroids.assign_sub(ALPHA * delta_c_nominator / (1.0 + labels_sum))

        centroids_delta = centroids_delta.assign(tf.zeros([num_classes,num_features]))

, а теперь мне нужно найти отрицательную разницу с минимальными значениями следующим образом: enter image description here

где qi: enter image description here

Я не нашел ни одной совместимой функции Tensorflow, которая могла бы добиться того же.

...