我正在使用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')
])
答案 0 :(得分:0)
在这种情况下,您传递的尺寸略有错误。 from_tensor_slices
需要一个对象列表,而不是嵌套列表。
dataset = tf.data.Dataset.from_tensor_slices(([i for i in t_df['feature']], t_df['label']))