Как я могу преобразовать фрейм данных Pandas из векторов и меток во входные данные для RNN в TensorFlow

#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']))