notas de estudo TensorFlow (quatro) - Introdução - Uso básico

Endereço Tutorial: comunidade TensorFlow chinês

uso básico

Use TensorFlow, você deve entender TensorFlow:

  • Fig (Graph) para representar as tarefas de computação.
  • Em chamados  会话 (Session) contexto executa (contexto) no.
  • Use tensor representação de dados.
  • Por  变量 (Variable) manter o estado.
  • Usando alimentação e operações de busca pode ser atribuído um (operação arbitrária) arbitrária ou para obter daí dados.

visão global

TensorFlow um sistema de programação é utilizada para representar as tarefas de computação FIG. Nós no gráfico é denominada  op  (abreviatura de operação). Op obter um 0 ou mais  Tensor, realizam cálculos, produzir 0 ou mais  Tensor. Cada Tensor é um tipo de matriz multi-dimensional. Por exemplo, pode definir uma imagem de grupo é representado como uma matriz de quatro dimensões de números de ponto flutuante, estas quatro dimensões são  [batch, height, width, channels].

Um TensorFlow FIG descreve o processo de cálculo de modo a calcular, a FIG deve  会话 ser iniciado em.  会话 A distribuição da FIG op a tais como uma CPU ou uma GPU  设备 no, enquanto proporciona um método para a realização de op. Estes métodos realizada, o resultante Voltar no tensor linguagem Python, o tensor é retornado.  numpy ndarray  objetos; em C e linguagem C ++, o tensor é devolvido tensorflow::Tensor instância.

Figura computação

programas TensorFlow são normalmente organizados em uma fase e uma fase de execução da construção .

  • Durante a fase de construção, passo op é descrito como um FIG.
  • Na fase de execução, usando a execução sessão figuras op.

Por exemplo, geralmente criar um gráfico na fase de construção para representar e treinar a rede neural, e, em seguida, executar repetidamente treinando figura op durante a fase de implementação.

TensorFlow suporta C, C ++, linguagem de programação Python. Atualmente, biblioteca TensorFlow Python mais fácil de usar, ele fornece um número de funções auxiliares para simplificar o trabalho de construção de gráficos, essas funções não foram suportados pelas bibliotecas C e C ++.

Trilingue sessão biblioteca (bibliotecas de sessão) são os mesmos.

diagrama de construção

FIG primeiro passo na construção é o de criar uma fonte op (Fonte op). Nenhuma fonte op entrada, por exemplo  常量 (Constant)de origem é transmitida para a saída de op op realizar outras operações.

biblioteca Python, op construtor é configurado para devolver um valor que representa a saída de op, o valor de retorno pode ser transmitido para outro op configurado como uma entrada.

biblioteca TensorFlow Python tem um gráfico padrão (gráfico padrão) , construtor OP pode aumentar seus nós. Os gráficos padrão para muitos programas tem sido suficiente. Leia a  classe Graph  documentação para aprender a gerenciar mapa múltipla.

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)

O mapa padrão agora tem três nós, dois  constant() op, e um matmul() op. A fim de realmente ser o resultado da multiplicação de matrizes, e obter a multiplicação de matrizes, você deve iniciar a sessão nesta figura.

Numa sessão iniciar FIG.

Após a conclusão da fase de construção, para começar a desenhar. O primeiro passo é criar um gráfico de boot  Session objetos, se criado sem nenhum parâmetro, a sessão começará o mapa construtor padrão.

Para API sessão completa, leia a classe 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 necessidade objeto a ser fechada após o uso para liberar os recursos. Além de uma chamada explícita para fechar, pode ser usado "com o" bloco de código para desligar automaticamente a operação.

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

Na realização, TensorFlow convertida em operação de execução definição distribuídos gráfico, para tirar o máximo proveito dos recursos de computação disponíveis (por exemplo, CPU ou GPU). Normalmente você não precisa especificar explicitamente CPU ou GPU, TensorFlow detectado automaticamente. Se o detectado GPU, TensorFlow usará a primeira GPU para encontrar o máximo possível para executar a operação.

Se mais de uma GPU está disponível na máquina, outra GPU, exceto o primeiro padrão não está envolvido no cálculo. Para utilizar estes TensorFlow GPU, você tem que executar op explicitamente atribuída a eles.  with...Device Quem é usada para CPU específica atribuir ou GPU fazer:

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 string de identificação do dispositivo é atualmente suportados incluem:

  • "/cpu:0": Máquina de CPU.
  • "/gpu:0": A primeira GPU da máquina, se houver.
  • "/gpu:1": Segunda GPU da máquina, e assim por diante.

Leia usando a GPU para mais informações TensorFlow GPU uso.

uso interativo

documento de amostra Python usando uma sessão  Session para começar mapa, e invoca  Session.run() um método para executar operações.

Para facilidade de uso, como um  IPython  ambiente interativo como Python, pode ser usado  InteractiveSession em vez da  Session categoria, o uso  Tensor.eval() e  Operation.run() métodos de lugar  Session.run(). Isso evita o uso de uma variável para armazenar a sessão.

# 进入一个交互式 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

estrutura de dados de programas usos tensor TensorFlow para representar todos os dados para calcular as figuras, todas as operações de transferência de dados entre o tensor. Pode TensorFlow tensor considerada como uma matriz n-dimensional, ou de uma lista Terminou tensor contém um tipo estático, e uma forma. TensorFlow quiser aprender como lidar com esses conceitos, consulte  Rank, forma e tipo .

variável

As variáveis  para os detalhes muito mais. Variáveis para manter informações de estado no processo de desenho executado. O exemplo a seguir demonstra como usar variáveis para alcançar um contador simples. Veja a  variáveis  seção para mais detalhes.

# 创建一个变量, 初始化为标量 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  assign() operação faz parte do mapa de expressão descrito como  add() operar o mesmo Então chamada.  run() Antes de executar a expressão, que na verdade não executar a tarefa.

Geralmente um parâmetro modelo estatístico é representado como um conjunto de variáveis. Por exemplo, você pode botão direito em um pesos de redes neurais em um tensor no processo de formação, por várias vezes correndo mapa formação, atualizar esta tensor como um armazenamento variável.

Buscar

Para recuperar o conteúdo da operação de saída, você pode usar  Session um objeto  run() quando você chamar executa, passando algumas do tensor, o tensor irá ajudá-lo a recuperar os resultados. No exemplo anterior, nós só recuperar um único nó  state, mas você também pode recuperar vários 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 necessidade de obter mais valor e se reunir em uma única corrida na op (em vez de um por um para tensor adquirir).

Alimentação

Os exemplos acima é introduzida no cálculo do valor do tensor, na forma de constantes ou variáveis ​​armazenadas. TensorFlow também fornece um mecanismo de alimentação, o qual pode ser qualquer um dos seguintes valores de substituição temporária em tensor pode apresentar um remendo para o desenho qualquer operação directamente numa tensor.

feed usando um valor tensor da saída de uma operação de substituição temporária. Você pode fornecer dados de alimentação como um  run() parâmetro da chamada. alimentar apenas dentro dos confins método eficaz de chamar seus métodos, alimentação desaparecerá. O caso de uso mais comum é para alguns especiais operação é designada como "alimentação" operação, o método de marcação é usar tf.placeholder () cria um espaço reservado para estas operações.


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 um exemplo em larga escala de alimentos . Se nenhuma alimentação adequada,  placeholder() a operação produzirá um erro.  MNIST curso de alimentação totalmente conectado  ( código fonte ) dá um exemplo do uso de uma alimentação maior.

Publicado 47 artigos originais · Louvor obteve 121 · vista 680 000 +

Acho que você gosta

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