尝试将具有列表值的pandas DataFrame结构转换为tensorflow DataSet

时间:2019-04-16 17:23:22

标签: python pandas tensorflow tensorflow-datasets

我正在使用tensorflow构建DNNRegressor,而我的问题来自将存储为熊猫DataFrame的特征转换为tensorflow数据集结构的过程。 更具体地说,通过同时使用tf.data.Dataset.from_tensor_slices和我创建的要素列函数。

从这个tensorflow guide开始,我相信可以创建具有多维功能的数据结构。指南中提到创建feature_column时可以指定特征的形状。给出了两个示例,在键"Bowling"下的10元素矢量和在键"MyMatrix"下的10x5矩阵。在示例之后,我创建了一些多维特征。为简单起见,我创建了一个示例代码,下面使用pandas DataFrame发布了具有两个多维特征的示例代码,在"matrix"下有两个2x2矩阵示例,在"vector"下有两个3个元素向量示例。

两个示例中的每个都有两个输出,x和y(我看不出有任何证据可以支持这种表示形式,但这在问题的上下文中是最方便的)

import tensorflow as tf
import pandas as pd

# Create features DataFrame
feature_header = ['matrix', 'vector']
feature_table = [ [ [[1, 2], [3,4]], [5,6,7] ],
                 [ [[8, 9], [10,11]], [12,13,14] ] ]
features = pd.DataFrame(feature_table, columns=feature_header)

# Create outputs DataFrame
header_targets = ['x', 'y']
table_targets = [ [7, 8],
                 [9, 10] ]
labels = pd.DataFrame(table_targets, columns=header_targets)

ds = tf.data.Dataset.from_tensor_slices((features, labels))

转换为张量流数据集时在最后一行发生错误

TypeError: Expected binary or unicode string, got [[1, 2], [3, 4]]

我的问题是,可以进行这种转换吗?如果我为矩阵/向量的每个元素创建一个新列,则可以进行转换,但是当矩阵的大小为12x12时,这将变得非常混乱。

我正在使用tensorflow版本1.13.1和python 3.6.4

编辑

尝试使用numpy多维数组而不是列表,将要素表声明更改为以下内容

feature_table = [ [ np.array([[1, 2], [3,4]]), np.array([5,6,7]) ],
                 [ np.array([[8, 9], [10,11]]), np.array([12,13,14]) ] ]

收到以下错误

TypeError: Expected binary or unicode string, got array([[1, 2],
       [3, 4]])

0 个答案:

没有答案