繁体   English   中英

从 Pandas 数据帧转换为 TensorFlow 张量对象

[英]Converting from Pandas dataframe to TensorFlow tensor object

我还是 Python、机器学习和 TensorFlow 的新手,但我会尽我最大的努力直接进入。 不过我可以使用一些帮助。

我的数据目前位于 Pandas 数据框中。 如何将其转换为 TensorFlow 对象? 我试过了

dataVar_tensor = tf.constant(dataVar)
depth_tensor = tf.constant(depth)

但是,我收到错误[15780 rows x 9 columns] - got shape [15780, 9], but wanted []

我确定这可能是一个简单的问题,但我真的可以使用帮助。

非常感谢

附: 我在 Windows 10 上使用 Anaconda Python 3.5 运行 tensorflow 0.12

我已使用df.values将 Pandas 数据df.values转换为 Numpy 数组

现在,使用

dataVar_tensor = tf.constant(dataVar, dtype = tf.float32, shape=[15780,9])
depth_tensor = tf.constant(depth, 'float32',shape=[15780,1])

似乎工作。 我不能肯定地说它确实如此,因为我还有其他障碍需要克服才能使我的代码正常工作,但希望这是朝着正确方向迈出的一步。 感谢你的帮助

顺便说一句,我在下一个问题Converting TensorFlow tutorial to work with my own data中继续尝试让教程处理我自己的数据

这是我发现的一种适用于 Google Colab 的解决方案:

import pandas as pd
import tensorflow as tf
#Read the file to a pandas object
data=pd.read_csv('filedir')
#convert the pandas object to a tensor
data=tf.convert_to_tensor(data)
type(data)

这将打印如下内容:

tensorflow.python.framework.ops.Tensor

以下基于numpy数组输入数据很容易工作:

import tensorflow as tf
import numpy as np
a = np.array([1,2,3])
with tf.Session() as sess:
    tf.global_variables_initializer().run()

    dataVar = tf.constant(a)
    print(dataVar.eval())

-> [1 2 3]

不要忘记启动sessionrun()eval()您的张量对象以查看其内容; 否则它只会给你它的一般描述。

我怀疑由于您的数据位于 DataFrame 中而不是简单的数组中,因此您需要试验tf.constant()shape参数,您当前未指定该参数,以帮助它了解 DataFrame 的维度和处理它的指数等?

您可以将数据框列转换为张量对象,如下所示:

tf.constant((df['column_name']))

这应该返回一个张量变量,它看起来像这样:

<tf.Tensor: id=275634, shape=(48895,), dtype=float64, numpy=
array([1, 2, ...])>

此外,您可以根据需要添加任意数量的数据框列,如下所示:

tf.constant(([cdf['column1'], cdf['column2']]))

希望这可以帮助。

hottbox.pdtools.utils(HOTTBOX API 的 Pandas 集成工具)提供的功能

   pd_to_tensor(df[, keep_index])
   tensor_to_pd(tensor[, col_name])

用于双向转换。

您可以在make_input_fn(X, y, num_epochs)函数中使用tf.estimator.inputs.pandas_input_fn 但是,我还没有设法让它与多索引一起工作。 我通过使用df.reset_index(drop=True)将其转换为标准整数索引来解决此问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM