Использование разных типов данных в EagerTensor - PullRequest
2 голосов
/ 23 мая 2019

Используя Tensorflow 2.0 alpha , я получил ошибку ValueError: Can't convert Python sequence with mixed types to Tensor, когда пытался создать tf.data.Dataset, используя следующие данные:

enter image description here

Проверьте полный набор данных на Kaggle

Очевидно, что существуют смешанные типы данных. Sex - это строка, Age - число с плавающей запятой / double, SibSp и Parch - целые числа и т. Д.

Мой (Python 3) код для преобразования этого Pandas Dataframe в tf.data.Dataset основан на руководстве Tensorflow по Как классифицировать структурированные данные и выглядит следующим образом:

def df_to_dataset(dataframe, shuffle=True, batch_size=32):
  dataframe = dataframe.copy()

  # the 'Survived' column is the label (not shown in the image of the Dataframe but exists in the Dataframe)
  label = dataframe.pop('Survived')

  # create the dataset from the dataframe
  ds = tf.data.Dataset.from_tensor_slices((dict(dataframe), label))

  # if shuffle == true, randomize the entries
  if shuffle:
    ds = ds.shuffle(buffer_size=len(dataframe))
  ds = ds.batch(batch_size)

  return ds

Как уже упоминалось выше, эта функция выдаст ошибку ValueError: Can't convert Python sequence with mixed types to Tensor при ее выполнении, например:

train_ds = df_to_dataset(df_train, batch_size=32) 

(пока df_train - это кадр данных панд, который вы видите на изображении)

Теперь мне интересно, что я что-то упустил, потому что в учебнике Tensorflow (упомянутом выше) также используется фрейм данных со смешанными типами, но я не столкнулся с ошибками при попытке попробовать этот пример с точно такой же функцией df_to_dataset.

1 Ответ

2 голосов
/ 23 мая 2019

Эта ошибка связана со значениями NaN в определенных столбцах.Определите их с помощью dataframe['Name'].isnull().sum()) и замените.

...