如何解决大权重矩阵维数的张量流梯度问题?

时间:2017-05-29 07:22:19

标签: tensorflow

我试图通过传递损失使用tf.gradient计算渐变,并使用渐变更新权重。我观察到当重量矩阵尺寸很大时梯度为零。这可能是什么原因?

我发现代码中没有错误。我正在获得具有较小权重矩阵和输入向量大小的非零梯度。通常,对于输入矢量大小为1 * 100且重量为100x50,FP值将为1 x 50.在BP期间,ip将为1 x 50,权重将为50 x 100. BP矢量将为1 x 100.

损失是前向(FP)和后向传播(BP)值的差异的总和。 FP值是输入向量(IP) - sigmoid(IP x权重)和BP值 - sigmoid(FP x weight.Transpose)。

var_grad = tf.gradients(loss, [weight_matrix])[0]
update = tf.subtract(weight_matrix,(tf.mul(var_grad,0.1)))

我正在调用TF图,如下所示

result,cost,gradient = sess.run([update,loss,var_grad], feed_dict={weight_matrix: weight_mat})

前向传播值

w = tf.matmul(final,weight)
sig = tf.sigmoid(w)

损失计算为

for i in range(len(PopulatedList)):
    branch = PopulatedList[i]

    RC_FP = branch['RC_FP']
    RC_BP = branch['RC_BP']
    LC_FP = branch['RC_FP']
    LC_BP = branch['LC_BP']
    loss = tf.reduce_sum(tf.squared_difference(RC_FP_TF,RC_BP_TF),[0, 1]) + tf.reduce_sum(tf.squared_difference(LC_FP_TF,LC_BP_TF),[0, 1])

    out_error.append(loss)

error = tf.reduce_sum(out_error)
return error 

1 个答案:

答案 0 :(得分:0)

您的代码中似乎没有任何错误,因此您所看到的可能是您初始化权重的结果。