【问题标题】:Cannot create custom classifier in tensorflow无法在张量流中创建自定义分类器
【发布时间】:2017-03-17 21:09:44
【问题描述】:

到目前为止,这是我所做的:

import tensorflow as tf

dists_next_error = tf.placeholder(tf.float32)
dists_center_error = tf.placeholder(tf.float32)
pts_count = tf.placeholder(tf.float32)
ideal_polygon = tf.Variable(0.)

cost = tf.square(dists_next_error)      \
        + tf.square(dists_center_error) \
        + tf.square(pts_count - ideal_polygon)

optimizer = tf.train.GradientDescentOptimizer(.05).minimize(cost)

sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)

hund_zeros = tf.zeros([100])
hund_ones = tf.ones([100])

for i in range(1000):
    sess.run(optimizer, feed_dict={
        dists_next_error: hund_zeros,
        dists_center_error: hund_zeros,
        pts_count: hund_ones})

print(cost.eval(feed_dict={
        dists_next_error: 0.,
        dists_center_error: 0.,
        pts_count: 6.}))         #it should output 0 or close to it.

问题出在

sess.run(optimizer, feed_dict={
        dists_next_error: hund_zeros,
        dists_center_error: hund_zeros,
        pts_count: hund_ones})

pts_count 行更准确地说,它说:

TypeError:提要的值不能是 tf.Tensor 对象。可接受的提要值包括 Python 标量、字符串、列表或 numpy ndarray。

但我在 pts_count 中看不到张量,所以我不知道发生了什么。

【问题讨论】:

    标签: python-3.x numpy tensorflow


    【解决方案1】:

    张量不能用作提要值(这你知道); tf.ones(), tf.zeros 创建Tensors。所以,

    hund_zeros = tf.zeros([100])
    hund_ones = tf.ones([100])
    

    只是张量。

    您要做的是发送一些实际数字(这似乎是您的意图)。你可以使用:

    • numpy:np.ones([100])np.zeros([100])
    • 或使用hund_zeros, hund_ones = sess.run([hund_zeros, hund_ones])
    • 使用Tensor.eval()方法

    请参阅此处的答案以了解有关 eval() 的更多信息

    以下是您提供的使用运行的with 上下文管理器更改的代码:

    import tensorflow as tf
    
    dists_next_error = tf.placeholder(tf.float32)
    dists_center_error = tf.placeholder(tf.float32)
    pts_count = tf.placeholder(tf.float32)
    ideal_polygon = tf.Variable(0.)
    
    cost = tf.square(dists_next_error)      \
            + tf.square(dists_center_error) \
            + tf.square(pts_count - ideal_polygon)
    
    optimizer = tf.train.GradientDescentOptimizer(.05).minimize(cost)
    
    
    hund_zeros = tf.zeros([100])
    hund_ones = tf.ones([100])
    
    sess = tf.Session()
    init = tf.global_variables_initializer()
    
    with tf.Session()  as sess:
        sess.run(init)
    
        # run graphs to get some constants
        hund_zeros, hund_ones = sess.run([hund_zeros, hund_ones])
    
        for i in range(1000):
            sess.run(optimizer, feed_dict={
                dists_next_error: hund_zeros,
                dists_center_error: hund_zeros,
                pts_count: hund_ones})
    
        print(cost.eval(feed_dict={
                dists_next_error: 0.,
                dists_center_error: 0.,
                pts_count: 6.}))
    

    从这里开始。

    【讨论】:

      猜你喜欢
      • 2019-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-03
      • 1970-01-01
      • 2017-05-25
      • 2017-08-20
      • 1970-01-01
      相关资源
      最近更新 更多