Tensorflow:构造一个tf.Variable对象的张量

时间:2018-06-07 15:17:58

标签: python tensorflow

我的成本函数涉及矩阵

T=[[1.0-a,b],[a,1.0-b]] 

我可以定义

import numpy as np
import tensorflow as tf
a=0.3
b=0.4
T = tf.Variable([[1.0-a,b],[a,1.0-b]]

这在优化中效果很好,但后来我说我有四个变量:1-a,b,a,1-b(渐变有四个元素)。另一方面,我希望我的变量是两个:a和b(渐变有两个元素)。

我想做像

这样的事情
var = tf.Variable([a,b])
T = tf.constant([[1.0-var[0],var[1]],[var[0],1.0-var[1]]])

但这不起作用,输出以下内容:

TypeError: List of Tensors when single Tensor expected

那么如何构造由tf.Variable对象构成的张量?

谢谢。

2 个答案:

答案 0 :(得分:2)

我认为你需要的是:

import tensorflow as tf

a = tf.Variable(0.3)
b = tf.Variable(0.4)
T = tf.convert_to_tensor([[1.0 - a, b], [a, 1.0 - b]]

答案 1 :(得分:1)

将T初始化为占位符。

T = tf.placeholder(tf.float32, [2, 2])

开始会话时,请计算T并通过feed_dict

传递
with tf.Session() as sess:
    a, b = .3, .4
    inp = np.array([[1 - a, b], [a, 1 - b]])
    sess.run(optimizer, feed_dict={T : inp})

optimizer是最小化成本函数的节点。