我正在使用tensorflow构建DNNRegressor,而我的问题来自将存储为熊猫DataFrame的特征转换为tensorflow数据集结构的过程。
更具体地说,通过同时使用tf.data.Dataset.from_tensor_slices
和我创建的要素列函数。
从这个tensorflow guide开始,我相信可以创建具有多维功能的数据结构。指南中提到创建feature_column
时可以指定特征的形状。给出了两个示例,在键"Bowling"
下的10元素矢量和在键"MyMatrix"
下的10x5矩阵。在示例之后,我创建了一些多维特征。为简单起见,我创建了一个示例代码,下面使用pandas DataFrame发布了具有两个多维特征的示例代码,在"matrix"
下有两个2x2矩阵示例,在"vector"
下有两个3个元素向量示例。
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]])