Как я могу преобразовать Pandas DataFrame векторов и меток во вход для RNN в TensorFlow - PullRequest
0 голосов
/ 13 апреля 2019

Я работаю над классификатором текста с использованием LSTM в TensorFlow и не могу определить формат входных данных.Мои входные данные - это Pandas Dataframe с одним столбцом объектов и одним столбцом меток.

Мой столбец объектов - это двумерный массив, представляющий массив векторов, а мой столбец меток представляет собой строку, пример ввода данных ниже.

Как преобразовать этот Dataframe в набор данных, который можно использовать в качестве входных данных для использования в модели Tensorflow.Keras?

Я пытался преобразовать Dataframe в TensorFlow.Dataset.набор данных с использованием tf.data.Dataset.from_tensor_slices, но это вызывает ошибку 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 голосов
/ 13 апреля 2019

В этом случае вы только что прошли немного неправильные размеры.from_tensor_slices ожидает список объектов, а не вложенный список.

dataset = tf.data.Dataset.from_tensor_slices(([i for i in t_df['feature']], t_df['label']))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...