#python #tensorflow #machine-learning #text-classification
#python #tensorflow #машинное обучение #текст-классификация
Вопрос:
Я работаю над классификатором текста, используя LSTM в TensorFlow, и не могу определить формат входных данных. Мои входные данные представляют собой фрейм данных Pandas с одним столбцом объектов и одним столбцом меток.
Мой столбец объектов представляет собой 2D-массив, представляющий массив векторов, а мой столбец меток представляет собой строку, пример моего ввода данных приведен ниже.
Как мне преобразовать этот фрейм данных в набор данных, который можно использовать в качестве входных данных для использования в Tensorflow.Модель Keras?
Я попытался преобразовать фрейм данных в TensorFlow.Набор данных Dataset с использованием tf.data.Dataset.from_tensor_slices но это приводит к ошибке типа
##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. Добро пожаловать в SO. Вы хотите создать набор данных специально из фрейма данных из файла csv? Если последнее, TF имеет
tf.data.experimental.make_csv_dataset
только для этого
Ответ №1:
В этом случае вы просто передали немного неправильные размеры. from_tensor_slices
ожидает список объектов, а не вложенный список.
dataset = tf.data.Dataset.from_tensor_slices(([i for i in t_df['feature']], t_df['label']))