forward_features を使用して cloudml のインスタンス キーを取得しようとしていますが、修正方法がわからないエラーが常に発生します。tf.Transform を使用する前処理セクションは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)
トレーニング機能と一緒にキー列を渡すと、エラーが発生します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 セクションのキー列名を「example_id」から列ではないランダムな名前に変更した場合でも、後者ではなく前者のエラーが発生します。誰かがこれを理解するのを手伝ってくれますか?