notas de estudio TensorFlow (cuatro) - Introducción - Uso básico

Tutorial Dirección: comunidad china TensorFlow

uso básico

Uso TensorFlow, usted debe entender TensorFlow:

  • La figura (Gráfico) para representar las tareas de computación.
  • En los llamados  会话 (Session) contexto Ejecuta (contexto) en el.
  • Utilice tensor de representación de datos.
  • Por  变量 (Variable) mantener el estado.
  • Uso de alimentación y se ha podido recuperar operaciones puede ser asignado un (operación arbitraria) arbitraria o para obtener los mismos datos.

visión de conjunto

TensorFlow un sistema de programación se utiliza para representar las tareas de computación de la FIG. Nodos en el gráfico se llama  op  (abreviatura de operación). Op obtener un 0 o más  Tensor, realizar cálculos, producir 0 o más  Tensor. Cada Tensor es un tipo de matriz multi-dimensional. Por ejemplo, se puede establecer una imagen de grupo se representa como una matriz de cuatro dimensiones de números de punto flotante, estas cuatro dimensiones son  [batch, height, width, channels].

A TensorFlow figura describe el proceso de cálculo con el fin de calcular, la figura debe  会话 ser iniciado en.  会话 La distribución de la figura op a tal como una CPU o una GPU  设备 en, mientras que proporciona un método para realizar de op. Estos métodos realizan, la resultante de vuelta en el tensor lenguaje Python, se devuelve el tensor.  numpy ndarray  objetos; en lenguaje C y C ++, se devuelve el tensor de tensorflow::Tensor ejemplo.

Figura computación

TensorFlow programas suelen estar organizados en una fase con una fase de ejecución de la construcción .

  • Durante la fase de construcción, el paso op se describe como una figura.
  • En la fase de ejecución, mediante la ejecución de sesiones de cifras op.

Por ejemplo, por lo general crear un gráfico en la fase de construcción para representar y entrenar la red neuronal, y luego repetidamente ejecutar la formación de la figura op durante la fase de implementación.

TensorFlow compatible con C, C ++, Python Programming Language. Actualmente, la biblioteca de Python TensorFlow más fácil de usar, que ofrece una serie de funciones auxiliares para simplificar el trabajo de la construcción de gráficos, estas funciones no han sido apoyados por las bibliotecas de C y C ++.

sesión de la biblioteca en tres idiomas (bibliotecas de sesión) son los mismos.

diagrama de la construcción

La figura primer paso en la construcción es crear un op fuente (Fuente op). No entrada de la fuente op, por ejemplo  常量 (Constant)se transmite fuente a la salida del op op hacer otras operaciones.

biblioteca Python, constructor op está configurado para devolver un valor que representa la salida del op, el valor de retorno se puede pasar a otro op configurada como una entrada.

TensorFlow biblioteca de Python tiene un gráfico predeterminado (por defecto el gráfico) , constructor de OP puede aumentar sus nodos. Los gráficos por defecto para muchos programas han sido suficientes. Leer la  clase Gráfico  documentación para aprender a manejar de varios horizontes.

import tensorflow as tf

# 创建一个常量 op, 产生一个 1x2 矩阵. 这个 op 被作为一个节点
# 加到默认图中.
#
# 构造器的返回值代表该常量 op 的返回值.
matrix1 = tf.constant([[3., 3.]])

# 创建另外一个常量 op, 产生一个 2x1 矩阵.
matrix2 = tf.constant([[2.],[2.]])

# 创建一个矩阵乘法 matmul op , 把 'matrix1' 和 'matrix2' 作为输入.
# 返回值 'product' 代表矩阵乘法的结果.
product = tf.matmul(matrix1, matrix2)

El mapa predeterminado ahora tiene tres nodos, dos  constant() op, y una matmul() op. Con el fin de ser verdaderamente el resultado de la multiplicación de matrices, y obtener la multiplicación de matrices, debe iniciar la sesión en esta figura.

En una sesión de comenzar la figura.

Después de la finalización de la fase de construcción, para empezar a dibujar. El primer paso es crear un gráfico de arranque  Session objetos, si se crea sin ningún parámetro, la sesión se iniciará el mapa constructor por defecto.

Para API sesión completa, lea la clase Session .

# 启动默认图.
sess = tf.Session()

# 调用 sess 的 'run()' 方法来执行矩阵乘法 op, 传入 'product' 作为该方法的参数. 
# 上面提到, 'product' 代表了矩阵乘法 op 的输出, 传入它是向方法表明, 我们希望取回
# 矩阵乘法 op 的输出.
#
# 整个执行过程是自动化的, 会话负责传递 op 所需的全部输入. op 通常是并发执行的.
# 
# 函数调用 'run(product)' 触发了图中三个 op (两个常量 op 和一个矩阵乘法 op) 的执行.
#
# 返回值 'result' 是一个 numpy `ndarray` 对象.
result = sess.run(product)
print result
# ==> [[ 12.]]

# 任务完成, 关闭会话.
sess.close()

Session necesidad objeto a ser cerrado después de su uso para liberar los recursos. Además de una llamada explícita a cerca, se puede utilizar "con" bloque de código para cerrar automáticamente la operación.

with tf.Session() as sess:
  result = sess.run([product])
  print result

En la realización, TensorFlow convierte en definición distribuido operación de ejecución de gráfico, para aprovechar al máximo los recursos informáticos disponibles (por ejemplo, CPU o GPU). Por lo general, no es necesario especificar explícitamente CPU o GPU, TensorFlow detecta automáticamente. Si el detectados GPU, TensorFlow usará la primera GPU para encontrar tanto como sea posible para realizar la operación.

Si más de una GPU está disponible en la máquina, otra GPU excepto el primer defecto no está involucrado en el cálculo. Para utilizar estos TensorFlow GPU, tiene que ejecutar op asignado explícitamente a ellos.  with...Device Declaración se utiliza para CPU específica Asignar o GPU hacer:

with tf.Session() as sess:
  with tf.device("/gpu:1"):
    matrix1 = tf.constant([[3., 3.]])
    matrix2 = tf.constant([[2.],[2.]])
    product = tf.matmul(matrix1, matrix2)
    ...

dispositivos cadena de identificación de dispositivo es compatible actualmente incluyen:

  • "/cpu:0": CPU de la máquina.
  • "/gpu:0": La primera GPU de la máquina, en su caso.
  • "/gpu:1": Segunda GPU de la máquina, y así sucesivamente.

Leer uso de la GPU sección para obtener más información TensorFlow GPU uso.

uso interactivo

documento de muestra Python usando una sesión  Session para iniciar mapa, e invoca  Session.run() un método para llevar a cabo las operaciones.

Para facilitar su uso, tales como  IPython  entorno interactivo como Python, puede ser utilizado  InteractiveSession en lugar de la  Session categoría, el uso  Tensor.eval() y  Operation.run() los métodos de su lugar  Session.run(). Esto evita el uso de una variable para contener la sesión.

# 进入一个交互式 TensorFlow 会话.
import tensorflow as tf
sess = tf.InteractiveSession()

x = tf.Variable([1.0, 2.0])
a = tf.constant([3.0, 3.0])

# 使用初始化器 initializer op 的 run() 方法初始化 'x' 
x.initializer.run()

# 增加一个减法 subtract op, 从 'x' 减去 'a'. 运行减法 op, 输出结果 
sub = tf.subtract(x, a)
print sub.eval()
# ==> [-2. -1.]

Tensor

estructura de usos del programa tensor de datos TensorFlow para representar todos los datos para calcular las cifras, todas las operaciones de transferencia de datos entre el tensor. Puede TensorFlow tensor considerado como una matriz n-dimensional o una lista de A Rango tensor contiene un tipo estático, y una forma. TensorFlow quieran aprender cómo hacer frente a estos conceptos, véase  Rango, forma y tipo .

variable

Las variables  para los detalles más. Las variables para mantener información de estado en el proceso de dibujo ejecutado. El siguiente ejemplo muestra cómo utilizar variables para lograr un simple contador. Ver la  variables de  la sección para más detalles.

# 创建一个变量, 初始化为标量 0.
state = tf.Variable(0, name="counter")

# 创建一个 op, 其作用是使 state 增加 1

one = tf.constant(1)
new_value = tf.add(state, one)
update = tf.assign(state, new_value)

# 启动图后, 变量必须先经过`初始化` (init) op 初始化,
# 首先必须增加一个`初始化` op 到图中.
init_op = tf.initialize_all_variables()

# 启动图, 运行 op
with tf.Session() as sess:
  # 运行 'init' op
  sess.run(init_op)
  # 打印 'state' 的初始值
  print sess.run(state)
  # 运行 op, 更新 'state', 并打印 'state'
  for _ in range(3):
    sess.run(update)
    print sess.run(state)

# 输出:

# 0
# 1
# 2
# 3

Código de  assign() operación es parte del mapa de expresión representado como  add() el funcionamiento de la misma. Así que la llamada  run() antes de ejecutar la expresión, que en realidad no realiza la tarea.

Por lo general un parámetro de modelo estadístico se representa como un conjunto de variables. Por ejemplo, se puede enderezar los pesos de una red neural en un tensor En el proceso de formación, mediante la ejecución repetida mapa de formación, actualizar este tensor como almacenamiento de variables.

Ir a buscar

Para recuperar el contenido de la operación de salida, puede utilizar  Session un objeto  run() cuando se llama ejecuta, pasando algunos de tensor, el tensor le ayudará a recuperar los resultados. En el ejemplo anterior, sólo se recupera un único nodo  state, pero también se puede recuperar múltiples tensor:

input1 = tf.constant(3.0)
input2 = tf.constant(2.0)
input3 = tf.constant(5.0)
intermed = tf.add(input2, input3)
mul = tf.mul(input1, intermed)

with tf.Session():
  result = sess.run([mul, intermed])
  print result

# 输出:
# [array([ 21.], dtype=float32), array([ 7.], dtype=float32)]

Tensor de la necesidad de obtener más valor y se reúnen en una sola carrera en el PO (en lugar de uno en uno para tensor de adquisición).

Alimentar

Los ejemplos anteriores se introduce en el cálculo de la figura del tensor, en forma de constantes o variables almacenadas. TensorFlow también proporciona un mecanismo de alimentación, que puede ser cualquiera de las siguientes figuras de sustitución temporal en tensor puede presentar un parche para la elaboración de cualquier operación directamente en una tensor.

alimentación utilizando un valor tensorial de la salida de una operación de sustitución temporal. Puede proporcionar alimentación de datos como un  run() parámetro de la llamada. alimentan sólo dentro de los extremos método efectivo llamar a sus métodos, alimentación desaparecerá. El caso más común el uso es en cierta especial operación se designa como "alimentación" operación, el método de etiquetado es utilizar tf.placeholder () crea un marcador de posición para estas operaciones.


input1 = tf.placeholder(tf.types.float32)
input2 = tf.placeholder(tf.types.float32)
output = tf.mul(input1, input2)

with tf.Session() as sess:
  print sess.run([output], feed_dict={input1:[7.], input2:[2.]})

# 输出:
# [array([ 14.], dtype=float32)]

para un ejemplo a mayor escala de los alimentos . Si no hay alimentación adecuada,  placeholder() operación producirá un error.  MNIST curso de alimentación completamente conectado  ( código fuente ) da un ejemplo de la utilización de una alimentación más grande.

Publicado 47 artículos originales · ganado elogios 121 · vistas 680 000 +

Supongo que te gusta

Origin blog.csdn.net/guoyunfei123/article/details/82762331
Recomendado
Clasificación