71

tensorflow には、カテゴリ データを処理するための scikit Learn の1 つのホット エンコーダーに似たものがありますか? tf.string のプレースホルダーを使用すると、カテゴリ データとして動作しますか?

データをテンソルフローに送信する前に手動で前処理できることはわかっていますが、データを組み込むと非常に便利です。

4

15 に答える 15

8

任意の整数または整数のリストをワンホット エンコードする簡単で短い方法:

a = 5 
b = [1, 2, 3]
# one hot an integer
one_hot_a = tf.nn.embedding_lookup(np.identity(10), a)
# one hot a list of integers
one_hot_b = tf.nn.embedding_lookup(np.identity(max(b)+1), b)
于 2016-08-16T19:00:34.220 に答える
6

TensorFlow の最近のバージョン (ナイトリーやおそらく 0.7.1) には、必要な処理を行う tf.one_hot という op があります。見てみな!

一方、密行列があり、その中の値を調べて集計したい場合は、embedding_lookup 関数を使用することをお勧めします。

于 2016-03-09T20:53:13.020 に答える
2

tf.nn.embedding_lookupを見てください。カテゴリ ID からその埋め込みにマップされます。

入力データに使用する方法の例については、こちらを参照してください。

于 2015-11-19T17:26:19.417 に答える
0

それにはいくつかの方法があります。

ans = tf.constant([[5, 6, 0, 0], [5, 6, 7, 0]]) #batch_size*max_seq_len
labels = tf.reduce_sum(tf.nn.embedding_lookup(np.identity(10), ans), 1)

>>> [[ 0.  0.  0.  0.  0.  1.  1.  0.  0.  0.]
>>> [ 0.  0.  0.  0.  0.  1.  1.  1.  0.  0.]]

それを行う他の方法はです。

labels2 = tf.reduce_sum(tf.one_hot(ans, depth=10, on_value=1, off_value=0, axis=1), 2)

 >>> [[0 0 0 0 0 1 1 0 0 0]
 >>> [0 0 0 0 0 1 1 1 0 0]]
于 2016-12-02T23:55:55.103 に答える