私は投稿タグのような機能を持っています。だから、各観測のためにpost_tag機能は "oscars、brad-pitt、award"のようなタグの選択であるかもしれません。私は、Googleのクラウドマシンの学習を実行している推定子APIを使用してテンソルフローモデルビルドに機能として渡すことができるようにしたいと考えています(this example)。tensoflowでのマルチホンエンコーディング(Google Cloud Machine Learning、tf estimator api)
これをテンソルフローのマルチホットエンコード機能に変換する方法がわかりません。理想的にはsklearnのMultiLabelBinarizerに似たものを手に入れようとしています。
私はthisは関連性がありますが、私が必要とするものではないと思います。
だから私のようなデータを持っていると言う:私が持っている場合は
更新
id,post_tag_oscars,post_tag_brad_pitt,post_tag_awards,post_tag_film,post_tag_reviews,post_tag_matt_damon,post_tag_bourne
1,1,1,1,0,0,0,0
2,1,0,0,1,1,0,0
3,0,0,0,0,0,1,1
:として、tensorflow内の前処理の一部として、私はそれをフィーチャーしたい
id,post_tag
1,[oscars,brad-pitt,awards]
2,[oscars,film,reviews]
3,[matt-damon,bourne]
をpost_tag_listは、入力csvの "oscars、brad-pitt、award"のような文字列です。そして、私はそれからしようとした場合:
INPUT_COLUMNS = [
...
tf.contrib.lookup.HashTable(tf.contrib.lookup.KeyValueTensorInitializer('post_tag_list',
tf.range(0, 10, dtype=tf.int64),
tf.string, tf.int64),
default_value=10, name='post_tag_list'),
...]
私はこのエラーを取得する:
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/home/andrew_maguire/localDev/codeBase/pmc-analytical-data-mart/clickmodel/trainer/task.py", line 4, in <module>
import model
File "trainer/model.py", line 49, in <module>
default_value=10, name='post_tag_list'),
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/lookup_ops.py", line 276, in __init__
super(HashTable, self).__init__(table_ref, default_value, initializer)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/lookup_ops.py", line 162, in __init__
self._init = initializer.initialize(self)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/lookup_ops.py", line 348, in initialize
table.table_ref, self._keys, self._values, name=scope)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/gen_lookup_ops.py", line 205, in _initialize_table_v2
values=values, name=name)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/op_def_library.py", line 767, in apply_op
op_def=op_def)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 2632, in create_op
set_shapes_for_outputs(ret)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 1911, in set_shapes_for_outputs
shapes = shape_func(op)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 1861, in call_with_requiring
return call_cpp_shape_fn(op, require_shape_fn=True)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/common_shapes.py", line 595, in call_cpp_shape_fn
require_shape_fn)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/common_shapes.py", line 659, in _call_cpp_shape_fn_impl
raise ValueError(err.message)
ValueError: Shape must be rank 1 but is rank 0 for 'key_value_init' (op: 'InitializeTableV2') with input shapes: [], [], [10].
私は他の「オスカー、ブラッド・ピット、賞、その他、その他、のようになりパッドに各post_tag_listだった場合、OTHER、OTHER、OTHER、OTHER "ですので、常に10の長さです。それがここでの潜在的な解決策だろうか。
また、私がここで渡すかもしれないすべての投稿タグのサイズを知っている必要がありますか(まったく新しいものとして定義されています)。
すべてのタグセットのカーディナリティとは何ですか? – rhaertel80
実際には公開されています。誰かが投稿を作成すると、既存のものを見つけることができない場合、新しいタグを作ることもできます。これまでのところ約7kで、新しいタグをつけないように奨励しようとしていますが、新しいニュースの話が新しいものについて新しいタグが付けられるかどうかは分かりません。実際には、タグを投稿タイトルに似た単語として扱い、埋め込みスペースに入れる方が適切かもしれません。私は、タグと投稿についてdoc2vecを訓練し、密集した特徴としてそれらのベクトルを渡すつもりです。ワイドコラムに使うためにタグのダミーがあることを望んでいました。 – andrewm4894
これまでに目に見えなかったタグは、1つ以上の「見えない」重みベクトルにマッピングされます。 7Kは私が探していたものです。 – rhaertel80