如何使用tf.contrib.估计器.前进功能

2024-06-28 23:41:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用forward_特性来获取cloudml的实例键,但是我总是遇到一些错误,我不知道如何修复。使用的预处理部分tf.变换是对https://github.com/GoogleCloudPlatform/cloudml-samples/tree/master/reddit_tft的修改,其中实例键是一个字符串,其他的都是一堆浮点。在

def gzip_reader_fn():
      return tf.TFRecordReader(options=tf.python_io.TFRecordOptions(
          compression_type=tf.python_io.TFRecordCompressionType.GZIP))


def get_transformed_reader_input_fn(transformed_metadata,
                                    transformed_data_paths,
                                    batch_size,
                                    mode):
  """Wrap the get input features function to provide the runtime arguments."""
  return input_fn_maker.build_training_input_fn(
      metadata=transformed_metadata,
      file_pattern=(
          transformed_data_paths[0] if len(transformed_data_paths) == 1
          else transformed_data_paths),
      training_batch_size=batch_size,
      label_keys=[],
      #feature_keys=FEATURE_COLUMNS,
      #key_feature_name='example_id',
      reader=gzip_reader_fn,
      reader_num_threads=4,
      queue_capacity=batch_size * 2,
      randomize_input=(mode != tf.contrib.learn.ModeKeys.EVAL),
      num_epochs=(1 if mode == tf.contrib.learn.ModeKeys.EVAL else None))

estimator = KMeansClustering(num_clusters=8, 
      initial_clusters=KMeansClustering.KMEANS_PLUS_PLUS_INIT, 
      kmeans_plus_plus_num_retries=32,
      relative_tolerance=0.0001)

estimator = tf.contrib.estimator.forward_features(
      estimator,
      'example_id')

train_input_fn = get_transformed_reader_input_fn(
      transformed_metadata, args.train_data_paths, args.batch_size,
      tf.contrib.learn.ModeKeys.TRAIN)

estimator.train(input_fn=train_input_fn)

如果我要在keys列中传递训练特性,那么我会得到错误Tensors in list passed to 'values' of 'ConcatV2' Op have types [float32, float32, string, float32, float32, float32, float32, float32, float32, f loat32, float32, float32, float32, float32, float32, float32, float32, float32, float32, float32, float32, float32, float32, float32] that don't all match.但是,如果我在训练期间没有传递实例键,那么我会得到一个错误值,说明该键不存在于这些特性中。另外,如果我要将forward_features部分中的key column name从'example'u id'更改为某个不是列的随机名称,那么我仍然会得到前一个错误而不是后一个错误。有人能帮我弄明白吗?在


Tags: inputdatasizetf错误batchcontribnum
1条回答
网友
1楼 · 发布于 2024-06-28 23:41:15

请检查以下内容:

(1)前向功能仅适用于TF.估计器. 确保您没有使用贡献学习估计器. (更新:您使用的类继承自tf.估计器)在

(2)确保输入函数在键列中读取。因此,键列必须是输入数据集的一部分。在

(3)在下列情况下tf.变换,#2表示转换元数据必须反映密钥的架构。您看到的错误消息似乎表明模式将其指定为float,而实际上它是一个字符串。或者类似的事情。在

(4)确保您的模型未使用键列。因此,您不应该用它创建FeatureColumn。换言之,模型只需将输入所读取的键传递给预测器。在

(5)如果在输出中看不到键,请查看此解决方法是否有助于:

https://github.com/GoogleCloudPlatform/training-data-analyst/blob/master/courses/machine_learning/deepdive/07_structured/babyweight/trainer/model.py#L132

本质上,forward_特性会改变内存中的图形,但不会更改导出的签名。我的解决方案解决了这个问题。在

相关问题 更多 >