【问题标题】:Implementation of a neural model on Tensor-flow在张量流上实现神经模型
【发布时间】:2017-12-07 16:10:25
【问题描述】:

我正在尝试在张量流上实现神经网络模型,但似乎在占位符的形状方面存在问题。我是 TF 的新手,因此这可能只是一个简单的误解。这是我的代码和数据示例:

_data=[[0.4,0.5,0.6,1],[0.7,0.8,0.9,0],....]

数据由 4 列的数组组成,每个数组的最后一列是标签。我想将每个数组分类为标签 0、标签 1 或标签 2。

import tensorflow as tf
import numpy as np

_data = datamatrix
X = tf.placeholder(tf.float32, [None, 3])
W = tf.Variable(tf.zeros([3, 1]))
b = tf.Variable(tf.zeros([3]))

init = tf.global_variables_initializer()
Y = tf.nn.softmax(tf.matmul(X, W) + b)

# placeholder for correct labels
Y_ = tf.placeholder(tf.float32, [None, 1])

# loss function
import time
start=time.time()

cross_entropy = -tf.reduce_sum(Y_ * tf.log(Y))

# % of correct answers found in batch
is_correct = tf.equal(tf.argmax(Y,1), tf.argmax(Y_,1))
accuracy = tf.reduce_mean(tf.cast(is_correct, tf.float32))

optimizer = tf.train.GradientDescentOptimizer(0.003)
train_step = optimizer.minimize(cross_entropy)


sess = tf.Session()
sess.run(init)
for i in range(1000):
    # load batch of images and correct answers
    batch_X, batch_Y = [x[:3] for x in _data[:2000]],[x[-1] for x in _data[:2000]]
    train_data={X: batch_X, Y_: batch_Y}

    # train
    sess.run(train_step, feed_dict=train_data)

# success ?
a,c = sess.run([accuracy, cross_entropy], feed_dict=train_data)

运行我的代码后,我收到以下错误消息:

ValueError: Cannot feed value of shape (2000,) for Tensor 'Placeholder_1:0', which has shape '(?, 1)'

我想要的输出应该是使用交叉熵的模型的性能;下面代码行中的准确度值:

a,c = sess.run([accuracy, cross_entropy], feed_dict=train_data)

对于如何改进模型或更适合我的数据的模型的任何建议,我也将不胜感激。

【问题讨论】:

    标签: python tensorflow neural-network


    【解决方案1】:

    Placeholder_1:0Y_ 和输入数据batch_Y 的形状不匹配,如错误消息中所指定。注意一维和二维数组。

    所以你应该定义一维占位符:

    Y_ = tf.placeholder(tf.float32, [None])
    

    或准备二维数据:

        batch_X, batch_Y = [x[:3] for x in _data[:2000]],[x[-1:] for x in _data[:2000]]
    

    【讨论】:

    • 不客气。您可以将此问题标记为已回答吗?
    猜你喜欢
    • 2017-06-04
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 2020-02-27
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    相关资源
    最近更新 更多