оптимизация евклидовых расстояний с использованием тензорного потока - PullRequest
0 голосов
/ 12 мая 2019

Я пытаюсь сгенерировать пространство MDS здесь с использованием тензорного потока путем оптимизации следующей функции стоимости: стоимость = enter image description here

стоимость пытается создать вложения(векторы) такие, что евклидово расстояние между векторами Vi и Vj (dij) близко к || Xi-Xj ||из матрицы различий (константа)

мой код:

def pairwise_dist (A, B):  
    """
    Computes pairwise distances between each element of A and each element of B.
    Args:
    A,    [m,d] matrix
    B,    [n,d] matrix
    Returns:
    D,    [m,n] matrix of pairwise distances
    """
    with tf.variable_scope('pairwise_dist'):
        # squared norms of each row in A and B
        na = tf.reduce_sum(tf.square(A), 1)
        nb = tf.reduce_sum(tf.square(B), 1)

        # na as a row and nb as a co"lumn vectors
        na = tf.reshape(na, [-1, 1])
        nb = tf.reshape(nb, [1, -1])

        # return pairwise euclidead difference matrix
        D = tf.sqrt((tf.maximum(na - 2*tf.matmul(A, B, False, True) + nb, 0.0))+0.0001)#+eps
    return D

training_epochs = 150
count=0
tf.reset_default_graph()


embedding=tf.get_variable("embedding",initializer = np.array(dim_5_all[0],dtype=np.float32))

dissMatrix=tf.constant(np.array(dissmatrix))# 

midstep= pairwise_dist(embedding,embedding)#calculate the  eucl_dis

thirdStep=tf.reduce_sum(tf.square(midstep-dissMatrix))

fourthstep=tf.sqrt(thirdStep /tf.reduce_sum(tf.square(midstep)))

cost=thirdStep
optimizer = tf.train.AdagradOptimizer(0.001)
train_step = optimizer.minimize(cost )

init = tf.global_variables_initializer()

cost_history = np.empty(shape=[1],dtype=float)

with tf.Session() as sess:
    sess.run(init)
    for epoch in range(training_epochs):

        _,mid,th,fou,vectors= sess.run([train_step,midstep,thirdStep,fourthstep,embedding])

Модель не работает, стоимость начинается с небольшого числа и не уменьшается, она остается прежней, даже если я изменяюскорость обучения.Евклидовы расстояния между порожденными векторами не близки к матрице различий.

Я не вижу проблемы по коду

Я ценю любую помощь

...