Aula 06 – Tensor Flow – Redes Neurais – Variáveis, Placeholders e Grafos

Aula 06 – Tensor Flow – Variáveis, Placeholders e Grafos

Voltar para página principal do blog

Todas as aulas desse curso

Aula 05                      Aula 07

Meu github:

https://github.com/toticavalcanti

Documentação oficial do TensorFlow:

https://www.tensorflow.org/

Link para o notebook da aula:

notebook-da-aula

Python com Tensorflow

Python com Tensorflow

Se gostarem do conteúdo dêem um joinha 👍 na página do Código Fluente no
Facebook

Link do código fluente no Pinterest

Aproveito para deixar meus link de afiliados:

Hostinger

Digital Ocean

One.com

Toti:

https://www.youtube.com/channel/UCUEtjLuDpcOvR3mIUr-viOA

Backing track / Play-along:

https://www.youtube.com/channel/UCT3TryVMqTqYBjf5g5WAHfA

Código Fluente

https://www.youtube.com/channel/UCgn-O-88XBAwdG9gUWkkb0w

Putz!

https://www.youtube.com/channel/UCZXop2-CECwyFYmHbhnAkAw

Fiquem a vontade para me adicionar ao linkedin.

Aula 06 – Tensor Flow – Redes Neurais – Variáveis, Placeholders e Grafos

Placeholder

Um placeholder é um nó vazio que precisa receber um valor, que pode ser uma feature, labels, etc. Para então poder computar a saída.

Variável

Uma variável é um valor mutável de parâmetro do grafo que representa a rede, por exemplo, os pesos das conexões.

Grafo

Um grafo, é a representação da rede, é uma variável global, conectando variáveis e placeholders de operações.

Placeholder


class Placeholder():
  def __init__(self):
    self.output_nodes = []
    _default_graph.placeholders.append(self)

A classe Placeholder inicia o output_nodes como uma lista vazia em seu construtor e se adiciona a lista placeholders da variável global _default_graph com o append.

Variable


class Variable():
  def __init__(self, initial_value = None):
    self.value = initial_value
    self.output_nodes = []
    
    _default_graph.variables.append(self)

A classe Variable pode receber um valor inicial, o valor inicial, ou seja, o que chegar em initial_value, será atribuído ao value da instância da classe Variable.

O output_node dela é declarado como uma lista vazia, e ela se adiciona na lista de variáveis do grafo, isto é, em
_default_graph.variables fazendo o append dela mesma na lista de variáveis do grafo.

Grafo

Agora vamos criar o grafo como uma variável global.


class Grafo():
  def __init__(self):
    self.operations = []
    self.placeholders = []
    self.variables = []

  def set_as_default(self):
    global _default_graph
    _default_graph = self

O que o grafo basicamente faz é conectar placeholders e variáveis a operações.

Ele acompanha todos eles através das listas operations, placeholders e variables.

O método set_as_default() é para definir o Grafo como global e as outras classes (Variable e Placeholder) poderem acessar o _default_graph.

O _default_graph = self é para poder ser acessado, isto é, instanciado pelo main.

Vamos modificar a classe Operations adicionando as operações ao Grafo global que representa a rede:


class Operation():
  #construtor
  def __init__(self, input_nodes = []):
    self.input_nodes = input_nodes
    # a lista vazia vai ser substituída 
    # pela classe que irá extender Operation
    # ou seja as operações
    self.output_nodes = []

    # para cada nó no input_nodes
    # ponha essa operação na lista
    # output_nodes daquele nó
    for node in input_nodes:
      node.output_nodes.append(self)

    _default_graph.operations.append(self)
  # O pass é porque o compute é apenas um método de espaço
  # reservado e será substituído pelo método específico (soma, multiplica...)
  def compute(self):
    pass

Exemplo de uso

z = Ax + b

A = 10

b = 1

z = 10x + 1

O z guarda o valor retornado pela fórmula Ax + b.

O x na fórmula é um placeholder.

A e b são variáveis.

O valor de z vai depender do placeholder que a gente passar para o x.

Então, se você passar para ele uma operação de adição, ou de multiplicação, ou de o resultado da computação será diferente.

Instanciando um grafo

Vamos instanciar um objeto grafo e inicializar ele como variável global.


g = Graph()
g.set_as_default()

E temos duas variáveis


A = Variable(10)
b = Variable(1)

O x é um Placeholder, e não sabemos seu valor, ele será fornecido pelo usuário.


x = Placeholder()

Na fórmula z = Ax + b  temos duas operações, a multiplicação de A por x e a soma do resultado com o b.

Então vamos utilizar a operação multiply() primeiro.


y = multiply(A, x)

E o resultado final vamos guardar em z.


z = add(y, b)

Ordem de operações

Na aula que vem, vamos criar a função traversePostOrder() que servirá para garantir que a computação ocorra na ordem certa.

Ela vai percorrer os nós do grafo na ordem certa e portanto fazer a computação correta.

Vamos também criar a classe Session que é quem vai executar de fato o grafo.

Isso nós vamos ver na próxima!

\o/ e até lá.

notebook-da-aula

Ficamos por aqui e até a próxima.

Voltar para página principal do blog

Todas as aulas desse curso

Aula 05                       Aula 07

Meu github:

https://github.com/toticavalcanti

Se gostarem do conteúdo dêem um joinha 👍 na página do Código Fluente no
Facebook

Link do código fluente no Pinterest

Novamente deixo meus link de afiliados:

Hostinger

Digital Ocean

One.com

Obrigado, até a próxima e bons estudos. 😉

 

 

 

 

 

About The Author
-

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>