2017-09-26 100 views
1

我试图在Tensorflow中生成一个简单的线性模型。下面是代码...张量流中的线性模型

N  = 400 
features = 100 
nSteps = 1000 

data = (np.random.randn(N, features), np.random.randint(0, 2, N)) 

W = tf.placeholder(tf.float32, shape=(features,1), name='W') 
b = tf.placeholder(tf.float32, shape=(features,1), name='b') 
d = tf.constant(data[0], dtype=tf.float32) 

result = tf.add(tf.matmul(d, W), b) 

事实证明,可能有一些问题的b尺寸,但据我可以说某种原因,他们都OK了...

不知道为什么这是抛出一个错误。有人可以帮忙吗?

注:

result = tf.matmul(d, W) 

这是确定。

我检查了结果的形状,与b相同。不确定可能是什么问题。

回答

3

在线性模型(即输出层中的一个单元)中,b应该是标量。在数学上,对于单个观察,您有:result = WX + b,其中尺寸为W [1个特征],X [特征x 1]。然后,WX是标量。因此b应该是一个标量。

所以,你应该改变b以下内容,以获得正确的线性模型,使尺寸计算出:

b = tf.placeholder(tf.float32, shape=(1,1), name='b')