Avançar para o conteúdo principal

TensorFlow Variáveis e placeholders

Neste tutorial vamos introduzir dois novos tipos de nós: variáveis e placeholders.

Depois de importarmos o tensorflow:

import tensorflow as tf

Iniciamos a sessão, mas antes fazemos o reset ao estado interno:

tf.reset_default_graph()
sess=tf.Session()

Agora podemos criar duas variáveis:

x = tf.Variable(2.0,tf.float32)
y = tf.Variable(3.0,tf.float32)

Sempre que se utilizam variáveis numa sessão tensorflow é necessário inicializa-las:

init = tf.global_variables_initializer()
sess.run(init)

Agora podemos definir a expressão matemática a utilizar:

sumnodes = x + y

Agora podemos calcular o resultado da expressão:

print(sess.run(sumnodes))

Para alterarmos os valores das variáveis devemos utilizar a função assign:

sess.run(x.assign(5.0))

Como sempre temos de executar dentro da sessão. Podemos associar esta operação a uma referência o que permite executar várias operações em simultâneo:

NewX = x.assign(5.0)
NewY = y.assign(10.0)

sess.run([NewX,NewY])

Agora, se avaliarmos a expressão o resultado é diferente:

print(sess.run(sumnodes))

Os placeholders têm um comportamento diferente, pois permite mudar o valor quando a expressão é avaliada, podendo ser definido um conjunto de valores (array) que fazem com que o TensorFlow avalie a expressão para cada um de eles.

Assim, criamos um placeholder:

a = tf.placeholder(tf.float32)

Como se pode ver não tem nenhum valor atribuído. De seguida alteramos a nossa expressão para:

sumnodes = x*a + y

Para avaliar a expressão fazemos:

print(sess.run(sumnodes,{a: 10}))

O parâmetro que é passado define o valor do placeholder. Também podemos fazer assim:

print(sess.run(sumnodes,{a: range(10)}))

ou assim:

print(sess.run(sumnodes,{a: [2,5,8,11]}))

Ao trabalharmos com variáveis e placeholders é muito importante não esquecer de fechar a sessão:

sess.close()

O vídeo no youtube


O codigo no Github

Comentários

Mensagens populares deste blogue

Upgrade do Windows Home para Pro sem formatar

 Há algum tempo que tentava fazer o upgrade do meu Windows 10 da versão Home para a versão Pro, mas chegava sempre a um ponto em que me era solicitado para formatar o sistema e não estava para isso. Finalmente conseguinte seguindo estes passos: - seguinte estes passos  utilizei uma das chaves genéricas para o Windows 10 Pro e fui a Settings > Update & Security > Activation > Change the product key; - após inserir uma das chaves o Windows instala as funcionalidades Pro e pede para reiniciar; - agora tem o Windows Pro mas não está ativado, assim fui ao site urcdkeys  onde comprei uma chave para o Windows Pro por menos de €20; - com essa chave voltei a funcionalidade Change the product key e ativei o Windows; - e pronto, Windows Pro ativado sem formatar ou reinstalar. Importante : eu não tenho nada a ver com o site urcdkeys por isso a vossa experiência pode correr de forma diferente da minha.

Vamos fazer um carro com o Unity 3D

Neste artigo vamos fazer um carro, simples, com o Unity 3D. A ideia é utilizar o motor de física do Unity 3D para simular o comportamento do carro. Os passos a seguir são: [1] - Criar um projeto novo

Tem troco

Para hoje um pequeno programa que dá troco, bem dar não dá mas calcula o troco a dar em função das moedas disponíveis. Neste projeto vamos utilizar o novo Visual Studio 2012. Como era de se esperar vamos iniciar um projeto novo: Agora adicionamos os seguintes elementos:  - um botão para calcular as moedas a dar de troco  - um botão para repor o número de moedas iniciais disponíveis  - uma textbox para introduzir o valor a pagar  - uma textbox para introduzir o valor entregue  - umas labels para informar o utilizador do que deve introduzir e outra para mostrar o troco  - por fim uma grelha para mostrar os valores das moedas e as quantidades disponíveis de cada uma. A janela principal do programa fica assim: Agora o código, primeiro o evento load do formulário, neste vamos definir os valores das moedas e as respetivas quantidades Para guardar estes valores vamos necessitar de uma variável definida ao nível do formulário, logo abaixo da definição da class: Public Class Form1     Public mo