Я не очень уверен, является ли это проблемой Tensorflow или питона. Я очень новичок в обоих.
Мой код основан на примере учебника Tensorflow wide_deep.py. Я изменил функцию input_fn, чтобы она могла принимать мой набор данных ( Train_data.csv )
Вот код:
def input_fn(data_file, num_epochs, shuffle, batch_size):
"""Generate an input function for the Estimator."""
assert tf.gfile.Exists(data_file), (
'%s not found. Please make sure you have run data_download.py and '
'set the --data_dir argument to the correct path.' % data_file)
features_interim = pd.read_csv(data_file, usecols=['vgs', 'vbs', 'vds', 'current'])
labels_interim = pd.read_csv(data_file, usecols=['plo_tox', 'plo_dxl', 'plo_dxw', 'parl1', 'parl2', 'random_fn'])
features_numpy = features_interim.as_matrix().transpose()
features = dict(zip(_CSV_FEATURE_COLUMNS, features_numpy))
labels_numpy = labels_interim.as_matrix().transpose()
labels = dict(zip(_CSV_LABEL_COLUMNS, labels_numpy))
dataset = tf.data.Dataset.from_tensor_slices((features, labels))
if shuffle:
dataset = dataset.shuffle(buffer_size=_NUM_EXAMPLES['train'])
dataset = dataset.repeat(num_epochs)
dataset = dataset.batch(batch_size)
return dataset
Но когда я выполняю код, он имеет эту ошибку:
Основная функция этого кода здесь:
def main(unused_argv):
# Clean up the model directory if present
shutil.rmtree(FLAGS.model_dir, ignore_errors=True)
model = build_estimator(FLAGS.model_dir, FLAGS.model_type)
train_file = "Tensorflow_training_data.csv"
test_file = "Tensorflow_testing_data.csv"
train_hooks = hooks_helper.get_train_hooks(
FLAGS.hooks, batch_size=FLAGS.batch_size,
tensors_to_log={'average_loss': 'head/truediv',
'loss': 'head/weighted_loss/Sum'})
# Train and evaluate the model every `FLAGS.epochs_between_evals` epochs.
for n in range(FLAGS.train_epochs // FLAGS.epochs_between_evals):
model.train(
input_fn=lambda: input_fn(train_file, FLAGS.epochs_between_evals, True,
FLAGS.batch_size),
hooks=train_hooks)
results = model.evaluate(input_fn=lambda: input_fn(
test_file, 1, False, FLAGS.batch_size))
# Display evaluation metrics
print('Results at epoch', (n + 1) * FLAGS.epochs_between_evals)
print('-' * 60)
for key in sorted(results):
print('%s: %s' % (key, results[key]))
В исходном примере (https://github.com/tensorflow/models/tree/master/official/wide_deep/wide_deep.py), тип данных, переданный в модель (DNNLinearCombinedClassifier) является словарем. Я думаю, что я делаю то же самое, только то, что я использую DNNLinearCombinedRegressor. Но, очевидно, я делать что-то не так.
Может кто-нибудь сказать мне, где я запутался? Спасибо!