Есть ли у Tensorflow модели, которым не нужны метки, чтобы быть бинарными или строковыми? - PullRequest
0 голосов
/ 12 мая 2018

Я новичок в Tensorflow и меня очень смущают модели, которые он предоставляет.Я хотел бы знать, есть ли какая-либо модель Tensorflow, которая может иметь метки, НЕ имеющие двоичный тип данных или строку

В этом примере (https://github.com/tensorflow/models/tree/master/official/wide_deep/wide_deep.py) - это та, над которой я работаю.

Я пытаюсь обучить модель, которая имеет 4 входных объекта и 6 выходных меток, все с типом float64. Модели (либо DNNLinearCombinedClassifier, либо DNNLinearCombinedRegressor), кажется, ищут метки с двоичным или строковым значением, поскольку эта ошибка показывает: enter image description here

Кто-нибудь знает какие-либо другие модели, которые я могу использовать, чтобы иметь несколько меток с плавающим типом данных? Или я все равно могу обойти это?

Часть моего кодаздесь:

  _CSV_FEATURE_COLUMNS = ['vgs', 'vbs', 'vds', 'current']
  _CSV_LABEL_COLUMNS = ['plo_tox', 'plo_dxl', 'plo_dxw', 'parl1', 'parl2', 'random_fn']
  _CSV_COLUMN_DEFAULTS = [[0.0000], [0.0000], [0.0000], [0.0000], [0.0000],
                          [0.0000], [0.0000], [0.0000], [0.0000], [0.0000]]

  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)

    def parse_csv(value):
       columns = tf.decode_csv(value, record_defaults=_CSV_COLUMN_DEFAULTS)
       feature_columns = columns[6:10]
       features = dict(zip(_CSV_FEATURE_COLUMNS, feature_columns))
       label_columns = columns[0:6]
       labels = dict(zip(_CSV_LABEL_COLUMNS, label_columns))
       return features, labels

  dataset = tf.data.TextLineDataset(data_file)
  dataset = dataset.map(parse_csv, num_parallel_calls=5)
  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]))

Спасибо

...