TensorFlowの日本語まとめ

TensorFlowの公式サイトに書かれている英文を英語ど素人が翻訳(日本語訳/和訳)します。 間違いがありましたら、優しく教えていただけますと幸いです。 内容を理解したら、使ってみたい。

5.グラフの構築

これは、すべての埋め込みについてですので、私たちの埋め込み行列を定義してみましょうこれは、起動するだけで大きなランダム行列です私たちは、単位立方体で均一に値を初期化します。

embeddings = tf.Variable(
    tf.random_uniform([vocabulary_size, embedding_size], -1.0, 1.0))

ノイズ対照推定損失は明確にロジスティック回帰モデル定義されています。このために、私たちは語彙中の各単語の重みとバイアスを定義する必要があります。(入力埋め込みとは対照的に、出力の重みと呼ばれます)。それでは、それを定義してみましょう。

nce_weights = tf.Variable(
  tf.truncated_normal([vocabulary_size, embedding_size],
                      stddev=1.0 / math.sqrt(embedding_size)))
nce_biases = tf.Variable(tf.zeros([vocabulary_size]))

スポンサーリンク

 

 

今、私たちは場所のパラメータを持っていることを私たちはskip-gramモデルグラフを定義することができます。簡単にするために、各単語を整数として表現されるように、私たちはすでに語彙とのテキストコーパスを統合していると仮定してみましょう。 (詳細は、tensorflow/examples/tutorials/word2vec/word2vec_basic.pyを見てください。)

skip-gramモデルは、2つの入力を取ります。一つは、他のターゲット単語のためである、ソースコンテキストワードを表す整数の完全なバッチです。私たちは後でデータに送り込むことができるようにするため、これらの入力のためのplaceholderノードを作成してみましょう。

# Placeholders for inputs
train_inputs = tf.placeholder(tf.int32, shape=[batch_size])
train_labels = tf.placeholder(tf.int32, shape=[batch_size, 1])

今、私たちは何をする必要があるか、バッチ内のソースワードのそれぞれについてベクトルをルックアップすることですTensorFlowが、これは簡単に便利なヘルパーがあります。

 embed = tf.nn.embedding_lookup(embeddings, train_inputs)

 Ok, 今、私たちはそれぞれの単語のための埋め込みを持っていることを私たちは、ノイズ対照的トレーニングの目的を使用してターゲット単語を予測してみたいと思います。

# Compute the NCE loss, using a sample of the negative labels each time.
loss = tf.reduce_mean(
  tf.nn.nce_loss(nce_weights, nce_biases, embed, train_labels,
                 num_sampled, vocabulary_size))

今、私たちは損失ノードを持っていることを私たちはパラメータなどを勾配を計算するために必要なノードを追加して更新する必要があります。このために私たちは確率的勾配降下を使用し、TensorFlowも同様に、これは簡単にするために便利なヘルパーを持っています。

# We use the SGD optimizer.
optimizer = tf.train.GradientDescentOptimizer(learning_rate=1.0).minimize(loss)

f:id:TensorFlow:20160130014939j:plain

(原文サイト)

Vector Representations of Words