Я пытаюсь следовать учебнику данных Tensorflow Load CSV https://www.tensorflow.org/tutorials/load_data/csv со своими собственными данными, но я продолжаю сталкиваться с препятствиями, когда дело доходит до упаковки числовых столбцов данных c, а затем итерации через них. Мой код и трассировка ниже. Интересно то, что это не из-за ошибки, когда я вызываю класс Pack и фактически приводил столбцы к float32. Ошибка выдается, когда я пытаюсь отобразить результат с помощью итерации.
Мысли?
Код:
from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf
from tensorflow import keras
import pandas as pd
import functools
import numpy as np
import matplotlib.pyplot as plt
import os
fibro_path = "/Users/rdelemos/PycharmProjects/MachineLearning/NASH/raw.csv"
batch_size = 32
selected_columns = ['age', 'sex', 'weight_kg', 'height_cm', 'bmi_calc', 'dm', 'fibro_cap', 'fibro_kpa', 'fib4',
'fib4_calc',
'fib4_comb', 'nfs_score', 'status']
numeric_columns = ['age', 'weight_kg', 'height_cm', 'bmi_calc', 'fibro_cap', 'fibro_kpa', 'fib4', 'fib4_calc',
'fib4_comb', 'nfs_score']
dataset = tf.data.experimental.make_csv_dataset(
fibro_path,
batch_size,
na_value="?",
num_epochs=1,
ignore_errors=True,
select_columns=selected_columns,
label_name='status'
)
def show_batch(dataset):
for batch, label in dataset.take(1):
for key, value in batch.items():
print("{:20s}: {}".format(key, value.numpy()))
class PackNumericFeatures(object):
def __init__(self, names):
self.names = names
def __call__(self, features, labels):
numeric_features = [features.pop(name) for name in self.names]
numeric_features = [tf.cast(feat, tf.float32) for feat in numeric_features]
numeric_features = tf.stack(numeric_features, axis=-1)
features['numeric'] = numeric_features
return features, labels
packed_data = dataset.map(PackNumericFeatures(numeric_columns))
print("/////////////////////////////////////////////////////")
show_batch(packed_data)
Отслеживание:
2020-03-24 13:40:48.458261: W tensorflow/core/framework/op_kernel.cc:1599] OP_REQUIRES failed at cast_op.cc:123 : Unimplemented: Cast string to float is not supported
2020-03-24 13:40:48.458288: E tensorflow/core/common_runtime/executor.cc:642] Executor failed to create kernel. Unimplemented: Cast string to float is not supported
[[{{node Cast_4}}]]
Traceback (most recent call last):
File "/Users/rdelemos/PycharmProjects/MachineLearning/NASH/nash_ml.py", line 57, in <module>
show_batch(packed_data)
File "/Users/rdelemos/PycharmProjects/MachineLearning/NASH/nash_ml.py", line 35, in show_batch
for batch, label in dataset.take(1):
File "/Users/rdelemos/PycharmProjects/MachineLearning/venv/lib/python3.5/site-packages/tensorflow_core/python/data/ops/dataset_ops.py", line 332, in __iter__
return iterator_ops.IteratorV2(self)
File "/Users/rdelemos/PycharmProjects/MachineLearning/venv/lib/python3.5/site-packages/tensorflow_core/python/data/ops/iterator_ops.py", line 593, in __init__
self._create_iterator(dataset)
File "/Users/rdelemos/PycharmProjects/MachineLearning/venv/lib/python3.5/site-packages/tensorflow_core/python/data/ops/iterator_ops.py", line 611, in _create_iterator
gen_dataset_ops.make_iterator(ds_variant, self._iterator_resource)
File "/Users/rdelemos/PycharmProjects/MachineLearning/venv/lib/python3.5/site-packages/tensorflow_core/python/ops/gen_dataset_ops.py", line 2929, in make_iterator
_six.raise_from(_core._status_to_exception(e.code, message), None)
File "<string>", line 3, in raise_from
tensorflow.python.framework.errors_impl.UnimplementedError: Cast string to float is not supported
[[{{node Cast_4}}]] [Op:MakeIterator]