2016-08-06 8 views
4

テンソルフローチュートリアルtensorflowを使用しています。私は、次の行の説明を見つけるしたいと思います:テンソルフローのtf.contrib.layers.embedding_column

tf.contrib.layers.embedding_column 

それはword2vecまたは何か他のものを使用している場合、私は疑問に思う、または多分私は完全に間違った方向に考えています。私はGibHubをクリックしようとしましたが、何も見つかりませんでした。私はPythonがいくつかのC++ライブラリを参照する可能性があるので、GitHubを見ているのは簡単ではないだろうと推測しています。誰かが正しい方向に私を指すことができますか?

答えて

5

私もこれについて疑問に思っています。彼らが何をやっているのかは分かりませんが、これが私の発見です。

paper on wide and deep learningには、埋め込みベクトルがランダムに初期化されてから、誤差を最小限に抑えるためにトレーニング中に調整されるものとして記述されています。

通常、埋め込みを行うときは、データの任意のベクトル表現(ワンホットベクトルなど)をとり、それに埋め込みを表す行列を掛けます。この行列は、PCAによって、またはt-SNEやword2vecのようなものによって訓練中に見つけることができます。

embedding_columnの実際のコードはhereで、_FeatureColumnのサブクラスである_EmbeddingColumnというクラスとして実装されています。埋め込み行列をsparse_id_column属性内に格納します。次に、to_dnn_input_layerメソッドは、この埋め込み行列を適用して、次のレイヤの埋め込みを生成します。

def to_dnn_input_layer(self, 
         input_tensor, 
         weight_collections=None, 
         trainable=True): 
    output, embedding_weights = _create_embedding_lookup(
     input_tensor=self.sparse_id_column.id_tensor(input_tensor), 
     weight_tensor=self.sparse_id_column.weight_tensor(input_tensor), 
     vocab_size=self.length, 
     dimension=self.dimension, 
     weight_collections=_add_variable_collection(weight_collections), 
     initializer=self.initializer, 
     combiner=self.combiner, 
     trainable=trainable) 

だから私の知る限り、埋め込みが埋め込み行列にどのような学習則あなたが使っている(勾配降下など)を塗布して形成されているように思えます。

1

私は埋め込みに関して同様の疑いがありました。ここ

が要点である:

伝統広い線形モデルと共に埋め込み層を付加する能力は、低次元まで疎次元を減らすことによって、正確な予測を可能にします。ここで

enter image description here

それについてgood postです!

埋め込みレイヤーを結合すると、ここにはsimple exampleがあります。 Titanic Kaggleのデータを使用して、名前、性別、彼らが持っていた乗車券、彼らが宿泊したキャビンに支払った運賃など、乗客が生き残るかどうかを予測する。

関連する問題