如何在TensorFlow中将向量和标签的Pandas DataFrame转换为RNN的输入

时间:2019-04-13 16:59:24

标签: python tensorflow machine-learning text-classification

我正在使用TensorFlow中的LSTM进行文本分类,但无法弄清楚输入数据的格式。 我的输入数据是一个带有一个功能列和一个标签列的Pandas Dataframe。

我的要素列是一个二维数组,代表一个向量数组,我的标签列是一个String,下面是我的数据输入示例。

如何将此数据框转换为可用作Tensorflow.Keras模型输入的数据集?

我尝试使用tf.data.Dataset.from_tensor_slices将数据框转换为TensorFlow.Dataset数据集,但这会产生TypeError

##Building input data
test01 = ([[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],'label1')
test02 = ([[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[0,0,0,0]],'label2')
test03 = ([[1,1,1,1],[1,1,1,1],[1,1,1,1],[0,0,0,0],[1,1,1,1]],'label3')
test04 = ([[1,1,1,1],[0,0,0,0],[1,1,1,1],[1,1,1,1],[1,1,1,1]],'label1')
test_data = [test01,test02,test03,test04]


##DataFrame from data
columns = ['feature','label']
t_df = pd.DataFrame(data = test_data, columns = columns)

##Convert to TensorFlow Dataset
dataset = tf.data.Dataset.from_tensor_slices((t_df['feature'], t_df['label']))

这会产生以下错误:

TypeError: Expected binary or unicode string, got [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
##TensorFlow Model Example 
model = tf.keras.Sequential([,
    tf.keras.layers.LSTM(input_shape),
    tf.keras.layers.Dense(64, activation='relu'),
    tf.keras.layers.Dense(1, activation='sigmoid')
])

1 个答案:

答案 0 :(得分:0)

在这种情况下,您传递的尺寸略有错误。 from_tensor_slices需要一个对象列表,而不是嵌套列表。

dataset = tf.data.Dataset.from_tensor_slices(([i for i in t_df['feature']], t_df['label']))