Tensorflow排名不好?

时间:2016-10-26 12:09:13

标签: optimization tensorflow rank

我试图最小化在相同大小(n * m)的四个可变张量上定义的简单损失

def matloss(pm,pv,qm,qv):
    pv=tf.clip_by_value(pv,1e-3,100)
    qv=tf.clip_by_value(qv,1e-3,100)

    dpv=tf.reduce_prod(pv,reduction_indices=1)
    dqv=tf.reduce_prod(qv,reduction_indices=1)
    iqv = 1./qv
    diff = qm - pm
    loss=0.5*(tf.log(dqv / dpv) + tf.reduce_sum(tf.mul(iqv,pv),reduction_indices=1)+ tf.reduce_sum(tf.mul(tf.mul(diff,iqv),diff),reduction_indices=1) - tf.to_float(tf.shape(pm)[1]))
    return tf.reduce_mean(loss)

问题是当我正在运行优化时,我有以下错误:

ValueError:Shape()必须具有等级1

函数matloss返回良好的损失值,但是当我试图将其最小化时,会出现排名问题

我在这里遗漏了什么吗? 谢谢

m1=tf.Variable(tf.random_normal([n,m],mean=1.0, stddev=0.35))
v1=tf.Variable(tf.random_normal([n,m],mean=1.0, stddev=0.35))
m2=tf.Variable(tf.random_normal([n,m],mean=1.0, stddev=0.35))
v2=tf.Variable(tf.random_normal([n,m],mean=1.0, stddev=0.35))
loss=matloss(m1,v1,m2,v2)
init = tf.initialize_all_variables()
opt = tf.train.AdamOptimizer().minimize(loss)
sess = tf.Session()

with sess.as_default():
    sess.run(init)
    for i in range(5000):
        sess.run(opt)

有人可以复制粘贴我的代码并尝试告诉我,我是否是唯一一个出现此错误的人?

0 个答案:

没有答案