Tensorflow,数据集错误:“无法将DataFrame转换为Tensor或操作。”

时间:2018-07-07 18:18:57

标签: python pandas tensorflow

我正在尝试使用Tensorflow创建一个神经网络,并且正在尝试使用pandas数据框作为数据。这给了我一个错误,说我无法将数据帧转换为张量。我以为通过numpy.asarray()传递数据帧应该可以解决此错误,但是我仍然会收到错误。

这是我的代码:

import numpy as np
import tensorflow as tf
import pandas as pd

dataframe = pd.read_csv('data.csv')
dataframe.drop(dataframe.columns.difference(["Happiness.Score", "Freedom", "Family", "Generosity"]), 1, inplace=True)

train = dataframe[1:11]
test = dataframe[12:22]

test.pop("Happiness.Score")

dataY = np.asarray(train["Happiness.Score"])
dataX = np.asarray(train.drop(["Happiness.Score"], axis=1))

inputX = tf.placeholder(tf.float32, [10, 3])
inputY = tf.placeholder(tf.float32, [10])

W = tf.Variable(tf.zeros([3, 10]))
b = tf.Variable(tf.zeros([10]))

y = tf.nn.softmax(tf.matmul(inputX, W) + b)

cross_entropy = tf.reduce_sum(y * tf.log(inputY))

optimizer = tf.train.GradientDescentOptimizer(.01)
trainer = optimizer.minimize(cross_entropy)

init = tf.global_variables_initializer()

sess = tf.Session()
sess.run(init)
for step in range(1000):
    sess.run(train, feed_dict={inputX: dataX, inputY: dataY})
    print(sess.run(cross_entropy, feed_dict={inputX: dataX, inputY: dataY}))
sess.close()

这会引发错误

  

的类型无效,必须为字符串或张量。 (无法将DataFrame转换为张量或操作。)

关于如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:0)

您是要使用此行吗?

    sess.run(trainer, feed_dict={inputX: dataX, inputY: dataY})

您正在使用此行。

    sess.run(train, feed_dict={inputX: dataX, inputY: dataY})