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.