tensorflow ValueError: features should be a dictionary of `Tensor`s. Given type: <class 'tensorflow.python.framework.ops.Tensor'>
Google developer blog Introducing TensorFlow Feature Columns
This article can make you understand!
I just add 3 lines in the def parser(record)
.
as below:
my_features = {}
for idx, names in enumerate(feature_names):
my_features[names] = parsed['features'][idx]
import tensorflow as tf
tf.logging.set_verbosity(tf.logging.INFO)
feature_names = [
'SepalLength',
'SepalWidth',
'PetalLength',
'PetalWidth'
]
def my_input_fn(is_shuffle=False, repeat_count=1):
dataset = tf.data.TFRecordDataset(['csv.tfrecords']) # filename is a list
def parser(record):
keys_to_features = {
'label': tf.FixedLenFeature((), dtype=tf.int64),
'features': tf.FixedLenFeature(shape=(4,), dtype=tf.float32),
}
parsed = tf.parse_single_example(record, keys_to_features)
my_features = {}
for idx, names in enumerate(feature_names):
my_features[names] = parsed['features'][idx]
return my_features, parsed['label']
dataset = dataset.map(parser)
if is_shuffle:
# Randomizes input using a window of 256 elements (read into memory)
dataset = dataset.shuffle(buffer_size=256)
dataset = dataset.batch(32)
dataset = dataset.repeat(repeat_count)
iterator = dataset.make_one_shot_iterator()
features, labels = iterator.get_next()
return features, labels
feature_columns = [tf.feature_column.numeric_column(k) for k in feature_names]
classifier = tf.estimator.DNNClassifier(
feature_columns=feature_columns, # The input features to our model
hidden_units=[10, 10], # Two layers, each with 10 neurons
n_classes=3,
model_dir='lalalallal') # Path to where checkpoints etc are stored
classifier.train(input_fn=lambda: my_input_fn(is_shuffle=True, repeat_count=100))