TensorFlow: Upstream changes to git.

Changes:
- Updates to installation instructions.

Base CL: 107352130
This commit is contained in:
Manjunath Kudlur 2015-11-08 19:23:41 -08:00
parent b2dc60eaa9
commit d769a3fd30
8 changed files with 167 additions and 130 deletions

View File

@ -24,45 +24,34 @@ and discussion.**
# Download and Setup # Download and Setup
To install TensorFlow using a binary package, see the instructions below. For To install the CPU version of TensorFlow using a binary package, see the
more detailed installation instructions, including installing from source, see instructions below. For more detailed installation instructions, including
installing from source, GPU-enabled support, etc., see
[here](tensorflow/g3doc/get_started/os_setup.md). [here](tensorflow/g3doc/get_started/os_setup.md).
## Binary Installation ## Binary Installation
The TensorFlow Python API requires Python 2.7.
The simplest way to install TensorFlow is using
[pip](https://pypi.python.org/pypi/pip) for both Linux and Mac.
For the GPU-enabled version, or if you encounter installation errors, or for
more detailed installation instructions, see
[here](tensorflow/g3doc/get_started/os_setup.md#detailed_install).
### Ubuntu/Linux ### Ubuntu/Linux
Make sure you have [pip](https://pypi.python.org/pypi/pip) installed: ```bash
```sh
$ sudo apt-get install python-pip
```
Install TensorFlow:
```sh
# For CPU-only version # For CPU-only version
$ sudo pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl $ pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl
# For GPU-enabled version. See detailed install instructions
# for GPU configuration information.
$ sudo pip install https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl
``` ```
### Mac OS X ### Mac OS X
Make sure you have [pip](https://pypi.python.org/pypi/pip) installed: ```bash
# Only CPU-version is available at the moment.
If using `easy_install`: $ pip install https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl
```sh
$ sudo easy_install pip
```
Install TensorFlow (only CPU binary version is currently available).
```sh
$ sudo pip install https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl
``` ```
### Try your first TensorFlow program ### Try your first TensorFlow program
@ -83,7 +72,6 @@ Hello, TensorFlow!
``` ```
##For more information ##For more information
* [TensorFlow website](http://tensorflow.org) * [TensorFlow website](http://tensorflow.org)

View File

@ -1,90 +1,33 @@
# Download and Setup <a class="md-anchor" id="AUTOGENERATED-download-and-setup"></a> # Download and Setup <a class="md-anchor" id="AUTOGENERATED-download-and-setup"></a>
You can install TensorFlow using our provided binary packages or from source.
## Binary Installation <a class="md-anchor" id="AUTOGENERATED-binary-installation"></a> ## Binary Installation <a class="md-anchor" id="AUTOGENERATED-binary-installation"></a>
The TensorFlow Python API requires Python 2.7. The TensorFlow Python API requires Python 2.7.
The simplest way to install TensorFlow is using
[pip](https://pypi.python.org/pypi/pip) for both Linux and Mac.
If you encounter installation errors, see [common problems](#common_problems)
for some solutions. To simplify installation, please consider using our
virtualenv-based instructions [here](#virtualenv_install).
### Ubuntu/Linux <a class="md-anchor" id="AUTOGENERATED-ubuntu-linux"></a> ### Ubuntu/Linux <a class="md-anchor" id="AUTOGENERATED-ubuntu-linux"></a>
**Note**: All the virtualenv-related instructions are optional, but we recommend
using the virtualenv on any multi-user system.
Make sure you have [pip](https://pypi.python.org/pypi/pip), the python headers,
and (optionally) [virtualenv](https://pypi.python.org/pypi/virtualenv) installed:
```bash
$ sudo apt-get install python-pip python-dev python-virtualenv
```
Set up a new virtualenv environment. To set it up in the
directory `~/tensorflow`, run:
```bash
$ virtualenv --system-site-packages ~/tensorflow
$ cd ~/tensorflow
```
Activate the virtualenv:
```bash
$ source bin/activate # If using bash
$ source bin/activate.csh # If using csh
(tensorflow)$ # Your prompt should change
```
Inside the virtualenv, install TensorFlow:
```bash ```bash
# For CPU-only version # For CPU-only version
(tensorflow)$ pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl $ pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl
# For GPU-enabled version (only install this version if you have the CUDA sdk installed) # For GPU-enabled version (only install this version if you have the CUDA sdk installed)
(tensorflow)$ pip install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl $ pip install https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl
# When you are done using TensorFlow:
(tensorflow)$ deactivate # Deactivate the virtualenv
$ # Your prompt should change back
``` ```
### Mac OS X <a class="md-anchor" id="AUTOGENERATED-mac-os-x"></a> ### Mac OS X <a class="md-anchor" id="AUTOGENERATED-mac-os-x"></a>
**Note**: All the virtualenv-related instructions are optional, but we recommend
using the virtualenv on any multi-user system.
Make sure you have [pip](https://pypi.python.org/pypi/pip) and
(optionally) [virtualenv](https://pypi.python.org/pypi/virtualenv) installed:
If using `easy_install`:
```bash ```bash
$ sudo easy_install pip # If pip is not already installed # Only CPU-version is available at the moment.
$ sudo pip install --upgrade virtualenv $ pip install https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl
```
Set up a new virtualenv environment. Assuming you want to set it up in the
directory `~/tensorflow`, run:
```bash
$ virtualenv --system-site-packages ~/tensorflow
$ cd ~/tensorflow
```
Activate the virtualenv:
```bash
$ source bin/activate # If using bash
$ source bin/activate.csh # If using csh
(tensorflow)$ # Your prompt should change
```
Install TensorFlow (only CPU binary version is currently available).
```bash
(tensorflow)$ pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl
# When you are done using TensorFlow:
(tensorflow)$ deactivate # Deactivate the virtualenv
$ # Your prompt should change back
``` ```
## Docker-based installation <a class="md-anchor" id="AUTOGENERATED-docker-based-installation"></a> ## Docker-based installation <a class="md-anchor" id="AUTOGENERATED-docker-based-installation"></a>
@ -132,11 +75,10 @@ export CUDA_HOME=/usr/local/cuda
### Run TensorFlow <a class="md-anchor" id="AUTOGENERATED-run-tensorflow"></a> ### Run TensorFlow <a class="md-anchor" id="AUTOGENERATED-run-tensorflow"></a>
First, activate the TensorFlow virtualenv, then open a python terminal: Open a python terminal:
```bash ```bash
$ source ~/tensorflow/bin/activate # Assuming the tensorflow virtualenv is ~/tensorflow $ python
(tensorflow)$ python
>>> import tensorflow as tf >>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!') >>> hello = tf.constant('Hello, TensorFlow!')
@ -332,3 +274,100 @@ Validation error: 7.0%
... ...
... ...
``` ```
## VirtualEnv-based installation <a class="md-anchor" id="virtualenv_install"></a>
We recommend using [virtualenv](https://pypi.python.org/pypi/virtualenv) to
create an isolated container and install TensorFlow in that container -- it is
optional but makes verifying installation issues easier.
First, install all required tools:
```bash
# On Linux:
$ sudo apt-get install python-pip python-dev python-virtualenv
# On Mac:
$ sudo easy_install pip # If pip is not already installed
$ sudo pip install --upgrade virtualenv
```
Next, set up a new virtualenv environment. To set it up in the
directory `~/tensorflow`, run:
```bash
$ virtualenv --system-site-packages ~/tensorflow
$ cd ~/tensorflow
```
Then activate the virtualenv:
```bash
$ source bin/activate # If using bash
$ source bin/activate.csh # If using csh
(tensorflow)$ # Your prompt should change
```
Inside the virtualenv, install TensorFlow:
```bash
(tensorflow)$ pip install --upgrade <$url_to_binary.whl>
```
You can then run your TensorFlow program like:
```bash
(tensorflow)$ python tensorflow/models/image/mnist/convolutional.py
# When you are done using TensorFlow:
(tensorflow)$ deactivate # Deactivate the virtualenv
$ # Your prompt should change back
```
## Common Problems <a class="md-anchor" id="AUTOGENERATED-common-problems"></a>
### GPU-related issues <a class="md-anchor" id="AUTOGENERATED-gpu-related-issues"></a>
If you encounter the following when trying to run a TensorFlow program:
```python
ImportError: libcudart.so.7.0: cannot open shared object file: No such file or directory
```
Make sure you followed the the GPU installation [instructions](#install_cuda).
### On Linux <a class="md-anchor" id="AUTOGENERATED-on-linux"></a>
If you encounter:
```python
...
"__add__", "__radd__",
^
SyntaxError: invalid syntax
```
Solution: make sure you are using Python 2.7.
### On MacOSX <a class="md-anchor" id="AUTOGENERATED-on-macosx"></a>
If you encounter:
```python
import six.moves.copyreg as copyreg
ImportError: No module named copyreg
```
Solution: TensorFlow depends on protobuf which require six-1.10.0. The
installation on some machines may only have an earlier version of six that was
installed using distutils. Unfortunately, upgrading a distutils installed
project via `pip` is deprecated and may fail. If you having difficulty
upgrading six, we recommend playing around with tensorflow using virtualenv.

View File

@ -1,7 +1,7 @@
# Overview <a class="md-anchor" id="AUTOGENERATED-overview"></a> # Overview
## Variables: Creation, Initializing, Saving, and Restoring <a class="md-anchor" id="AUTOGENERATED-variables--creation--initializing--saving--and-restoring"></a> ## Variables: Creation, Initializing, Saving, and Restoring
TensorFlow Variables are in-memory buffers containing tensors. Learn how to TensorFlow Variables are in-memory buffers containing tensors. Learn how to
use them to hold and update model parameters during training. use them to hold and update model parameters during training.
@ -9,7 +9,7 @@ use them to hold and update model parameters during training.
[View Tutorial](../how_tos/variables/index.md) [View Tutorial](../how_tos/variables/index.md)
## TensorFlow Mechanics 101 <a class="md-anchor" id="AUTOGENERATED-tensorflow-mechanics-101"></a> ## TensorFlow Mechanics 101
A step-by-step walk through of the details of using TensorFlow infrastructure A step-by-step walk through of the details of using TensorFlow infrastructure
to train models at scale, using MNIST handwritten digit recognition as a toy to train models at scale, using MNIST handwritten digit recognition as a toy
@ -18,7 +18,7 @@ example.
[View Tutorial](../tutorials/mnist/tf/index.md) [View Tutorial](../tutorials/mnist/tf/index.md)
## TensorBoard: Visualizing Learning <a class="md-anchor" id="AUTOGENERATED-tensorboard--visualizing-learning"></a> ## TensorBoard: Visualizing Learning
TensorBoard is a useful tool for visualizing the training and evaluation of TensorBoard is a useful tool for visualizing the training and evaluation of
your model(s). This tutorial describes how to build and run TensorBoard as well your model(s). This tutorial describes how to build and run TensorBoard as well
@ -28,7 +28,7 @@ TensorBoard uses for display.
[View Tutorial](../how_tos/summaries_and_tensorboard/index.md) [View Tutorial](../how_tos/summaries_and_tensorboard/index.md)
## TensorBoard: Graph Visualization <a class="md-anchor" id="AUTOGENERATED-tensorboard--graph-visualization"></a> ## TensorBoard: Graph Visualization
This tutorial describes how to use the graph visualizer in TensorBoard to help This tutorial describes how to use the graph visualizer in TensorBoard to help
you understand the dataflow graph and debug it. you understand the dataflow graph and debug it.
@ -36,7 +36,7 @@ you understand the dataflow graph and debug it.
[View Tutorial](../how_tos/graph_viz/index.md) [View Tutorial](../how_tos/graph_viz/index.md)
## Reading Data <a class="md-anchor" id="AUTOGENERATED-reading-data"></a> ## Reading Data
This tutorial describes the three main methods of getting data into your This tutorial describes the three main methods of getting data into your
TensorFlow program: Feeding, Reading and Preloading. TensorFlow program: Feeding, Reading and Preloading.
@ -44,7 +44,7 @@ TensorFlow program: Feeding, Reading and Preloading.
[View Tutorial](../how_tos/reading_data/index.md) [View Tutorial](../how_tos/reading_data/index.md)
## Threading and Queues <a class="md-anchor" id="AUTOGENERATED-threading-and-queues"></a> ## Threading and Queues
This tutorial describes the various constructs implemented by TensorFlow This tutorial describes the various constructs implemented by TensorFlow
to facilitate asynchronous and concurrent training. to facilitate asynchronous and concurrent training.
@ -52,7 +52,7 @@ to facilitate asynchronous and concurrent training.
[View Tutorial](../how_tos/threading_and_queues/index.md) [View Tutorial](../how_tos/threading_and_queues/index.md)
## Adding a New Op <a class="md-anchor" id="AUTOGENERATED-adding-a-new-op"></a> ## Adding a New Op
TensorFlow already has a large suite of node operations from which you can TensorFlow already has a large suite of node operations from which you can
compose in your graph, but here are the details of how to add you own custom Op. compose in your graph, but here are the details of how to add you own custom Op.
@ -60,7 +60,7 @@ compose in your graph, but here are the details of how to add you own custom Op.
[View Tutorial](../how_tos/adding_an_op/index.md) [View Tutorial](../how_tos/adding_an_op/index.md)
## Custom Data Readers <a class="md-anchor" id="AUTOGENERATED-custom-data-readers"></a> ## Custom Data Readers
If you have a sizable custom data set, you may want to consider extending If you have a sizable custom data set, you may want to consider extending
TensorFlow to read your data directly in it's native format. Here's how. TensorFlow to read your data directly in it's native format. Here's how.
@ -68,14 +68,14 @@ TensorFlow to read your data directly in it's native format. Here's how.
[View Tutorial](../how_tos/new_data_formats/index.md) [View Tutorial](../how_tos/new_data_formats/index.md)
## Using GPUs <a class="md-anchor" id="AUTOGENERATED-using-gpus"></a> ## Using GPUs
This tutorial describes how to construct and execute models on GPU(s). This tutorial describes how to construct and execute models on GPU(s).
[View Tutorial](../how_tos/using_gpu/index.md) [View Tutorial](../how_tos/using_gpu/index.md)
## Sharing Variables <a class="md-anchor" id="AUTOGENERATED-sharing-variables"></a> ## Sharing Variables
When deploying large models on multiple GPUs, or when unrolling complex LSTMs When deploying large models on multiple GPUs, or when unrolling complex LSTMs
or RNNs, it is often necessary to access the same Variable objects from or RNNs, it is often necessary to access the same Variable objects from

View File

@ -0,0 +1,11 @@
# TensorFlow
* [Home][home]
* [Getting Started](/get_started/index.md)
* [Mechanics](/how_tos/index.md)
* [Tutorials](/tutorials/index.md)
* [Python API](/api_docs/python/index.md)
* [C++ API](/api_docs/cc/index.md)
* [Other Resources](/resources/index.md)
[home]: /index.md

View File

@ -15,7 +15,7 @@ Python list) has a rank of 2:
t = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] t = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
A rank two tensor is what we typically think of as a matrix, a rank on tensor A rank two tensor is what we typically think of as a matrix, a rank one tensor
is a vector. For a rank two tensor you can acccess any element with the syntax is a vector. For a rank two tensor you can acccess any element with the syntax
`t[i, j]`. For a rank three tensor you would need to address an element with `t[i, j]`. For a rank three tensor you would need to address an element with
't[i, j, k]'. 't[i, j, k]'.
@ -65,4 +65,3 @@ Data type | Python type | Description
`DT_QINT32` | `tf.qint32` | 32 bits signed integer used in quantized Ops. `DT_QINT32` | `tf.qint32` | 32 bits signed integer used in quantized Ops.
`DT_QINT8` | `tf.qint8` | 8 bits signed integer used in quantized Ops. `DT_QINT8` | `tf.qint8` | 8 bits signed integer used in quantized Ops.
`DT_QUINT8` | `tf.quint8` | 8 bits unsigned integer used in quantized Ops. `DT_QUINT8` | `tf.quint8` | 8 bits unsigned integer used in quantized Ops.

View File

@ -6,7 +6,7 @@
Additional details about the TensorFlow programming model and the underlying Additional details about the TensorFlow programming model and the underlying
implementation can be found in out white paper: implementation can be found in out white paper:
* [TensorFlow: Large-scale machine learning on heterogeneous systems](http://tensorflow.org/tensorflow-whitepaper2015.pdf) * [TensorFlow: Large-scale machine learning on heterogeneous systems](http://www.tensorflow.org/whitepaper2015.pdf)
### Citation <a class="md-anchor" id="AUTOGENERATED-citation"></a> ### Citation <a class="md-anchor" id="AUTOGENERATED-citation"></a>

View File

@ -1,7 +1,7 @@
# Overview <a class="md-anchor" id="AUTOGENERATED-overview"></a> # Overview
## MNIST For ML Beginners <a class="md-anchor" id="AUTOGENERATED-mnist-for-ml-beginners"></a> ## MNIST For ML Beginners
If you're new to machine learning, we recommend starting here. You'll learn If you're new to machine learning, we recommend starting here. You'll learn
about a classic problem, handwritten digit classification (MNIST), and get a about a classic problem, handwritten digit classification (MNIST), and get a
@ -10,7 +10,7 @@ gentle introduction to multiclass classification.
[View Tutorial](../tutorials/mnist/beginners/index.md) [View Tutorial](../tutorials/mnist/beginners/index.md)
## Deep MNIST for Experts <a class="md-anchor" id="AUTOGENERATED-deep-mnist-for-experts"></a> ## Deep MNIST for Experts
If you're already familiar with other deep learning software packages, and are If you're already familiar with other deep learning software packages, and are
already familiar with MNIST, this tutorial with give you a very brief primer on already familiar with MNIST, this tutorial with give you a very brief primer on
@ -19,7 +19,7 @@ TensorFlow.
[View Tutorial](../tutorials/mnist/pros/index.md) [View Tutorial](../tutorials/mnist/pros/index.md)
## TensorFlow Mechanics 101 <a class="md-anchor" id="AUTOGENERATED-tensorflow-mechanics-101"></a> ## TensorFlow Mechanics 101
This is a technical tutorial, where we walk you through the details of using This is a technical tutorial, where we walk you through the details of using
TensorFlow infrastructure to train models at scale. We use again MNIST as the TensorFlow infrastructure to train models at scale. We use again MNIST as the
@ -28,7 +28,7 @@ example.
[View Tutorial](../tutorials/mnist/tf/index.md) [View Tutorial](../tutorials/mnist/tf/index.md)
## Convolutional Neural Networks <a class="md-anchor" id="AUTOGENERATED-convolutional-neural-networks"></a> ## Convolutional Neural Networks
An introduction to convolutional neural networks using the CIFAR-10 data set. An introduction to convolutional neural networks using the CIFAR-10 data set.
Convolutional neural nets are particularly tailored to images, since they Convolutional neural nets are particularly tailored to images, since they
@ -38,7 +38,7 @@ representations of visual content.
[View Tutorial](../tutorials/deep_cnn/index.md) [View Tutorial](../tutorials/deep_cnn/index.md)
## Vector Representations of Words <a class="md-anchor" id="AUTOGENERATED-vector-representations-of-words"></a> ## Vector Representations of Words
This tutorial motivates why it is useful to learn to represent words as vectors This tutorial motivates why it is useful to learn to represent words as vectors
(called *word embeddings*). It introduces the word2vec model as an efficient (called *word embeddings*). It introduces the word2vec model as an efficient
@ -49,7 +49,7 @@ embeddings).
[View Tutorial](../tutorials/word2vec/index.md) [View Tutorial](../tutorials/word2vec/index.md)
## Recurrent Neural Networks <a class="md-anchor" id="AUTOGENERATED-recurrent-neural-networks"></a> ## Recurrent Neural Networks
An introduction to RNNs, wherein we train an LSTM network to predict the next An introduction to RNNs, wherein we train an LSTM network to predict the next
word in an English sentence. (A task sometimes called language modeling.) word in an English sentence. (A task sometimes called language modeling.)
@ -57,7 +57,7 @@ word in an English sentence. (A task sometimes called language modeling.)
[View Tutorial](../tutorials/recurrent/index.md) [View Tutorial](../tutorials/recurrent/index.md)
## Sequence-to-Sequence Models <a class="md-anchor" id="AUTOGENERATED-sequence-to-sequence-models"></a> ## Sequence-to-Sequence Models
A follow on to the RNN tutorial, where we assemble a sequence-to-sequence model A follow on to the RNN tutorial, where we assemble a sequence-to-sequence model
for machine translation. You will learn to build your own English-to-French for machine translation. You will learn to build your own English-to-French
@ -66,7 +66,7 @@ translator, entirely machine learned, end-to-end.
[View Tutorial](../tutorials/seq2seq/index.md) [View Tutorial](../tutorials/seq2seq/index.md)
## Mandelbrot Set <a class="md-anchor" id="AUTOGENERATED-mandelbrot-set"></a> ## Mandelbrot Set
TensorFlow can be used for computation that has nothing to do with machine TensorFlow can be used for computation that has nothing to do with machine
learning. Here's a naive implementation of Mandelbrot set visualization. learning. Here's a naive implementation of Mandelbrot set visualization.
@ -74,7 +74,7 @@ learning. Here's a naive implementation of Mandelbrot set visualization.
[View Tutorial](../tutorials/mandelbrot/index.md) [View Tutorial](../tutorials/mandelbrot/index.md)
## Partial Differential Equations <a class="md-anchor" id="AUTOGENERATED-partial-differential-equations"></a> ## Partial Differential Equations
As another example of non-machine learning computation, we offer an example of As another example of non-machine learning computation, we offer an example of
a naive PDE simulation of raindrops landing on a pond. a naive PDE simulation of raindrops landing on a pond.
@ -82,7 +82,7 @@ a naive PDE simulation of raindrops landing on a pond.
[View Tutorial](../tutorials/pdes/index.md) [View Tutorial](../tutorials/pdes/index.md)
## MNIST Data Download <a class="md-anchor" id="AUTOGENERATED-mnist-data-download"></a> ## MNIST Data Download
Details about downloading the MNIST handwritten digits data set. Exciting Details about downloading the MNIST handwritten digits data set. Exciting
stuff. stuff.
@ -90,7 +90,7 @@ stuff.
[View Tutorial](../tutorials/mnist/download/index.md) [View Tutorial](../tutorials/mnist/download/index.md)
## Visual Object Recognition <a class="md-anchor" id="AUTOGENERATED-visual-object-recognition"></a> ## Visual Object Recognition
We will be releasing our state-of-the-art Inception object recognition model, We will be releasing our state-of-the-art Inception object recognition model,
complete and already trained. complete and already trained.
@ -98,7 +98,7 @@ complete and already trained.
COMING SOON COMING SOON
## Deep Dream Visual Hallucinations <a class="md-anchor" id="AUTOGENERATED-deep-dream-visual-hallucinations"></a> ## Deep Dream Visual Hallucinations
Building on the Inception recognition model, we will release a TensorFlow Building on the Inception recognition model, we will release a TensorFlow
version of the [Deep Dream](https://github.com/google/deepdream) neural network version of the [Deep Dream](https://github.com/google/deepdream) neural network

View File

@ -106,7 +106,7 @@ P(w_t | h) &= \text{softmax}(\exp \{ \text{score}(w_t, h) \}) \\
\end{align} \end{align}
$$ $$
where \\(\text{score}(w_t, h)\\) computes the compatibility of word \\(w_t\\) with where \\( \text{score}(w_t, h) \\) computes the compatibility of word \\(w_t\\) with
the context \\(h\\) (a dot product is commonly used). We train this model by the context \\(h\\) (a dot product is commonly used). We train this model by
maximizing its log-likelihood on the training set, i.e. by maximizing maximizing its log-likelihood on the training set, i.e. by maximizing