SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
Começando com TensorFlow
Escreva seus próprios modelos de Machine Learning
!1
Sandro Moreira

moreira.sandro@gmail.com
Sandro Moreira
- Professor em cursos de Graduação e Pós Graduação da
Universidade de Rio Verde (UniRV)

- Mestre em Engenharia Mecânica (UNESP)

- Doutorando em Ciência da Computação (UFG)

- Consultor de Projetos para Machine Learning

- Coorganizador da comunidade GDG Rio Verde

- Coorganizador da comunidade TensorFlow Goiás
O que é TensorFlow?
Plataforma de código aberto de ponta a ponta para aprendizado de máquina. 

Possui um ecossistema abrangente e flexível de ferramentas, bibliotecas e
recursos da comunidade que permite que os pesquisadores desenvolvam o
que há de mais moderno em ML e os desenvolvedores construam e
implantem facilmente aplicativos desenvolvidos por ML.
Linguagens de Programação
Oficiais:

Python

JavaScript

C++

Java

Go

Swift (Release em Breve)
Mantidos por comunidades

C#: TensorFlowSharp e TensorFlow.NET

Haskell

Julia

MATLAB

Ruby

Rust

Scala
O TensorFlow possui APIs disponíveis em várias linguagens, tanto para
a construção quanto para a execução de um gráfico do TensorFlow.
a = tf.constant(5)
b = tf.constant(3)
c = a * b
print(c)
a = tf.constant(5)
b = tf.constant(3)
c = a * b
with tf.Session() as sess:
print(sess.run(c))
Simbólico Concreto
TF1 TF2
Funções, não sessões
x = tf.constant([[5, 2],[1, 3]])
print(x)
tf.Tensor(
[[5 2]
[1 3]], shape=(2,2), dtype=int32)
Constants
x.numpy()
array([[5, 2]
[1, 3]], dtype=int32)
Tensores para NumPy
a = tf.random.normal(shape=(2,2))
b = tf.random.normal(shape=(2,2))
c = a + b
d = tf.square©
array([[5, 2]
[1, 3]], dtype=int32)
Matemática no TF2 funciona como NumPy
Desenvolvimento Produção
Data Design
tf.data
TF Datasets
Model Design
Keras
Estimators
Training
Distribution Strategy
CPU GPU TPU
Analisys
TensorBoard
Serialization
Saved Model
Model Repository
TensorFlow HUB
Browser e Node
TensorFlow.JS
Android, IOS, Arduino, etc
TensorFlow Lite e Micro
Cloud
TensorFlow Services
Construindo um modelo com TensorFlow
Sequencial API
+ Built-in Layers
Functional API
+ Built-in Layers
Functional API
+Custom Layers
+Custom Metrics
+Custom Losses
Subclassing: write
everything yourself
from scratch
Novos usuários,

modelos simples
Engenheiros 

com demandas 

padrões
Engenheiros que 

querem maior 

controle em casos

muito específicos
Pesquisadores
Construindo um modelo com TensorFlow
Sequencial API
+ Built-in Layers
Functional API
+ Built-in Layers
Functional API
+Custom Layers
+Custom Metrics
+Custom Losses
Subclassing: write
everything yourself
from scratch
Novos usuários,

modelos simples
Engenheiros 

com demandas 

padrões
Engenheiros que 

querem maior 

controle em casos

muito específicos
Pesquisadores
model = keras.Sequential()
model.add(layers.Dense(32, activation=‘relu’, input_shape=(784,)))
model.add(layers.Dense(32, activation=‘relu’))
model.add(layers.Dense(10, activation=‘softmax’))
Construindo um modelo com TensorFlow
Sequencial API
+ Built-in Layers
Functional API
+ Built-in Layers
Functional API
+Custom Layers
+Custom Metrics
+Custom Losses
Subclassing: write
everything yourself
from scratch
Novos usuários,

modelos simples
Engenheiros 

com demandas 

padrões
Engenheiros que 

querem maior 

controle em casos

muito específicos
Pesquisadores
Exemplo de Caso de uso mais específico
Visual Question Answering (VQA)

Tarefa: Dada uma imagem e uma pergunta em linguagem natural, a resposta deve vir em linguagem natural
Antol, S. et all; VQA: Visual Question Answering; The IEEE International Conference on Computer Vision (ICCV), 2015
Pergunta: Qual a cor do cachorro da direita?

Resposta: Preto
Antol, S. et all; VQA: Visual Question Answering; The IEEE International Conference on Computer Vision (ICCV), 2015
1 - Usar uma CNN para a imagem

2 - Usar uma LSTM para a pergunta

3 - Concatenar

4 - Classificar com Dense layers

Workflow
Input Question

(Vectorized, Padded)
Input Image

(Normalized)
Embedding
LSTM
Conv2D and

Maxpooling2D stack

Concatenate
Dense/Softmax
vision_model = Sequential()
vision_model.add(Conv2D(64,(3,3),
activation = ‘relu’,
input_shape=(224, 224,3)))
vision_model.add(MaxPooling2D())
vision_model.add(Flatten())
image_input = Input(shape=(224,224,3))
encode_image = vision_model(image_input)
Input Question

(Vectorized, Padded)
Input Image

(Normalized)
Embedding
LSTM
Conv2D and

Maxpooling2D stack

Concatenate
Dense/Softmax
question_input = Input(shape=(100,),
dtype=‘int32’,
name=“Question”)
embedded = Embedding(input_dim=10000,
output_dim=256,
input_length=100)(question_input)
encoded_question = LSTM(256)(embedded)
Input Question

(Vectorized, Padded)
Input Image

(Normalized)
Embedding
LSTM
Conv2D and

Maxpooling2D stack

Concatenate
Dense/Softmax
merged = layers.concatenate([encoded_image,
encoded_question])
Input Question

(Vectorized, Padded)
Input Image

(Normalized)
Embedding
LSTM
Conv2D and

Maxpooling2D stack

Concatenate
Dense/Softmax
#Classificador
output = Dense(1000,
activation=‘softmax’)(merged)
#Construção do Modelo que você pode treinar
#com .fit, .train_on_batch ou GradientTape
vqa_model = Model(inputs=[image_input,
question_input],
outputs=output)
#visualizando modelo
from tensorflow.keras.utils import plot_model
plot_model(vqa_model, to_file=‘modelo.png’)
Input Question

(Vectorized, Padded)
Input Image

(Normalized)
Embedding
LSTM
Conv2D and

Maxpooling2D stack

Concatenate
Dense/Softmax
Construindo um modelo com TensorFlow
Sequencial API
+ Built-in Layers
Functional API
+ Built-in Layers
Functional API
+Custom Layers
+Custom Metrics
+Custom Losses
Subclassing: write
everything yourself
from scratch
Novos usuários,

modelos simples
Engenheiros 

com demandas 

padrões
Engenheiros que 

querem maior 

controle em casos

muito específicos
Pesquisadores
class MyModel(tf.keras.Model):
def "__init"__(self, num_classes=10):
super(MyModel, self)."__init"__(name=‘my_model’)
self.dense_1 = layers.Dense(32, activation=‘relu’)
self.dense_2 = layers.Dense(num_classes,activation=‘softmax’)
def call(self, inputs):
x = self.dense_1(inputs)
return self.dense_2(x)
Treinando um modelo com TensorFlow
model.fit()
model.train_on_batch()
+ callbacks
Custom training
with GradientTape
Experimento

Rápido
Customizado

com checkpoints,

Monitoramento

com TensorBoard,

Enviar mensagens

via Slack
Customizado

com otimizadores e 

funções de perda

específicos

Ex: GAN
Controle Total

Ex: Novos 

algoritmos

de otimização
model.fit()
+ callbacks
Treinando um modelo com TensorFlow
model.fit()
model.train_on_batch()
+ callbacks
Custom training
with GradientTape
Experimento

Rápido
Customizado

com checkpoints,

Monitoramento

com TensorBoard,

Enviar mensagens

via Slack
Customizado

com otimizadores e 

funções de perda

específicos

Ex: GAN
Controle Total

Ex: Novos 

algoritmos

de otimização
model.fit()
+ callbacks
model.compile(optimizer=Adam(),
loss=BinaryCrossentropy(),
metrics=[AUC(), Precision(), Recall()])
model.fit(data,
epochs=10,
validation_data=val_data,
callbacks=[EarlyStopping(),
TensorBoard(),
ModelCheckpoint()])
Usando Notebooks Colab e TensorFlow 2.x
bit.ly/2IFyV23Notebook disponível em:
Recursos - Libraries & Extensions
Recursos - Libraries & Extensions
Dica #1
teachablemachine.withgoogle.com
Dica #2
https://codelabs.developers.google.com/?cat=TensorFlow
Dica #3
https://www.tensorflow.org/tutorials
Referências
- Introduction to TensorFlow 2.0: Easier for beginners, and more powerful for experts
(TF World ’19) - Josh Gordon 

- Tensorflow Documentation - https://tensorflow.org 

- Google Colaboratory - https://colab.research.google.com/

Mais conteúdo relacionado

Semelhante a Comecando tensorflow

Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4CDS
 
Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...
Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...
Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...Opencadd Advanced Technology
 
Introducao a Linguagem Kotlin
Introducao a Linguagem KotlinIntroducao a Linguagem Kotlin
Introducao a Linguagem KotlinCalebeMiquissene
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowpichiliani
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowMauro Pichiliani
 
Curso de Introdução ao Android Básico
Curso de Introdução ao Android BásicoCurso de Introdução ao Android Básico
Curso de Introdução ao Android BásicoLuiz Carvalho
 
Aplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkAplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkFlávio Lisboa
 
Academia do Arquiteto Globalcode
Academia do Arquiteto GlobalcodeAcademia do Arquiteto Globalcode
Academia do Arquiteto GlobalcodeGlobalcode
 
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009Ramon Durães
 
Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...
Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...
Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...Luciana Zaina
 
Padrões De Projeto e Anti Patterns
Padrões De Projeto e Anti PatternsPadrões De Projeto e Anti Patterns
Padrões De Projeto e Anti PatternsHerval Freire
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Eric Gallardo
 
Hands On TensorFlow and Keras
Hands On TensorFlow and KerasHands On TensorFlow and Keras
Hands On TensorFlow and KerasSandro Moreira
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javJulio Viegas
 
.NET Core 3.0 e ASP.NET Core 3.0 : principais novidades - TDC 2019 - Porto Al...
.NET Core 3.0 e ASP.NET Core 3.0 : principais novidades - TDC 2019 - Porto Al....NET Core 3.0 e ASP.NET Core 3.0 : principais novidades - TDC 2019 - Porto Al...
.NET Core 3.0 e ASP.NET Core 3.0 : principais novidades - TDC 2019 - Porto Al...Renato Groff
 
Arquitetura executável: Documentando e automatizando a comunicação da equipe ...
Arquitetura executável: Documentando e automatizando a comunicação da equipe ...Arquitetura executável: Documentando e automatizando a comunicação da equipe ...
Arquitetura executável: Documentando e automatizando a comunicação da equipe ...WeOp - The Operations Summit
 

Semelhante a Comecando tensorflow (20)

Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4
 
Introdução Play framework
Introdução Play frameworkIntrodução Play framework
Introdução Play framework
 
Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...
Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...
Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Introducao a Linguagem Kotlin
Introducao a Linguagem KotlinIntroducao a Linguagem Kotlin
Introducao a Linguagem Kotlin
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlow
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlow
 
Framework Entities
Framework EntitiesFramework Entities
Framework Entities
 
Curso de Introdução ao Android Básico
Curso de Introdução ao Android BásicoCurso de Introdução ao Android Básico
Curso de Introdução ao Android Básico
 
Aplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkAplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend Framework
 
Academia do Arquiteto Globalcode
Academia do Arquiteto GlobalcodeAcademia do Arquiteto Globalcode
Academia do Arquiteto Globalcode
 
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
 
Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...
Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...
Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...
 
Apostila de-vb-net
Apostila de-vb-netApostila de-vb-net
Apostila de-vb-net
 
Padrões De Projeto e Anti Patterns
Padrões De Projeto e Anti PatternsPadrões De Projeto e Anti Patterns
Padrões De Projeto e Anti Patterns
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 
Hands On TensorFlow and Keras
Hands On TensorFlow and KerasHands On TensorFlow and Keras
Hands On TensorFlow and Keras
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
.NET Core 3.0 e ASP.NET Core 3.0 : principais novidades - TDC 2019 - Porto Al...
.NET Core 3.0 e ASP.NET Core 3.0 : principais novidades - TDC 2019 - Porto Al....NET Core 3.0 e ASP.NET Core 3.0 : principais novidades - TDC 2019 - Porto Al...
.NET Core 3.0 e ASP.NET Core 3.0 : principais novidades - TDC 2019 - Porto Al...
 
Arquitetura executável: Documentando e automatizando a comunicação da equipe ...
Arquitetura executável: Documentando e automatizando a comunicação da equipe ...Arquitetura executável: Documentando e automatizando a comunicação da equipe ...
Arquitetura executável: Documentando e automatizando a comunicação da equipe ...
 

Mais de Sandro Moreira

Introdução a Machine Learning
Introdução a Machine LearningIntrodução a Machine Learning
Introdução a Machine LearningSandro Moreira
 
Como o Google está Democratizando a Inteligência Artificial?
Como o Google está Democratizando a Inteligência Artificial?Como o Google está Democratizando a Inteligência Artificial?
Como o Google está Democratizando a Inteligência Artificial?Sandro Moreira
 
Deep Learning do Zero ao Impossível: Qual o caminho?
Deep Learning do Zero ao Impossível: Qual o caminho?Deep Learning do Zero ao Impossível: Qual o caminho?
Deep Learning do Zero ao Impossível: Qual o caminho?Sandro Moreira
 
Classificando Imagens com Redes Neurais Convolucionais
Classificando Imagens com Redes Neurais ConvolucionaisClassificando Imagens com Redes Neurais Convolucionais
Classificando Imagens com Redes Neurais ConvolucionaisSandro Moreira
 
Deep Learning e o Futuro da Inteligência Artificial
Deep Learning e o Futuro da Inteligência ArtificialDeep Learning e o Futuro da Inteligência Artificial
Deep Learning e o Futuro da Inteligência ArtificialSandro Moreira
 
Vendo nas Nuvens: Uma introdução à API de Visão Computacional da Google
Vendo nas Nuvens: Uma introdução à API de Visão Computacional da GoogleVendo nas Nuvens: Uma introdução à API de Visão Computacional da Google
Vendo nas Nuvens: Uma introdução à API de Visão Computacional da GoogleSandro Moreira
 

Mais de Sandro Moreira (7)

Introdução a Machine Learning
Introdução a Machine LearningIntrodução a Machine Learning
Introdução a Machine Learning
 
Como o Google está Democratizando a Inteligência Artificial?
Como o Google está Democratizando a Inteligência Artificial?Como o Google está Democratizando a Inteligência Artificial?
Como o Google está Democratizando a Inteligência Artificial?
 
Deep Learning do Zero ao Impossível: Qual o caminho?
Deep Learning do Zero ao Impossível: Qual o caminho?Deep Learning do Zero ao Impossível: Qual o caminho?
Deep Learning do Zero ao Impossível: Qual o caminho?
 
Classificando Imagens com Redes Neurais Convolucionais
Classificando Imagens com Redes Neurais ConvolucionaisClassificando Imagens com Redes Neurais Convolucionais
Classificando Imagens com Redes Neurais Convolucionais
 
Deep Learning e o Futuro da Inteligência Artificial
Deep Learning e o Futuro da Inteligência ArtificialDeep Learning e o Futuro da Inteligência Artificial
Deep Learning e o Futuro da Inteligência Artificial
 
Devfest cerrado2017
Devfest cerrado2017Devfest cerrado2017
Devfest cerrado2017
 
Vendo nas Nuvens: Uma introdução à API de Visão Computacional da Google
Vendo nas Nuvens: Uma introdução à API de Visão Computacional da GoogleVendo nas Nuvens: Uma introdução à API de Visão Computacional da Google
Vendo nas Nuvens: Uma introdução à API de Visão Computacional da Google
 

Comecando tensorflow

  • 1. Começando com TensorFlow Escreva seus próprios modelos de Machine Learning !1 Sandro Moreira moreira.sandro@gmail.com
  • 2. Sandro Moreira - Professor em cursos de Graduação e Pós Graduação da Universidade de Rio Verde (UniRV) - Mestre em Engenharia Mecânica (UNESP) - Doutorando em Ciência da Computação (UFG) - Consultor de Projetos para Machine Learning - Coorganizador da comunidade GDG Rio Verde - Coorganizador da comunidade TensorFlow Goiás
  • 3. O que é TensorFlow? Plataforma de código aberto de ponta a ponta para aprendizado de máquina. Possui um ecossistema abrangente e flexível de ferramentas, bibliotecas e recursos da comunidade que permite que os pesquisadores desenvolvam o que há de mais moderno em ML e os desenvolvedores construam e implantem facilmente aplicativos desenvolvidos por ML.
  • 4. Linguagens de Programação Oficiais: Python JavaScript C++ Java Go Swift (Release em Breve) Mantidos por comunidades C#: TensorFlowSharp e TensorFlow.NET Haskell Julia MATLAB Ruby Rust Scala O TensorFlow possui APIs disponíveis em várias linguagens, tanto para a construção quanto para a execução de um gráfico do TensorFlow.
  • 5. a = tf.constant(5) b = tf.constant(3) c = a * b print(c) a = tf.constant(5) b = tf.constant(3) c = a * b with tf.Session() as sess: print(sess.run(c)) Simbólico Concreto TF1 TF2 Funções, não sessões
  • 6. x = tf.constant([[5, 2],[1, 3]]) print(x) tf.Tensor( [[5 2] [1 3]], shape=(2,2), dtype=int32) Constants
  • 7. x.numpy() array([[5, 2] [1, 3]], dtype=int32) Tensores para NumPy
  • 8. a = tf.random.normal(shape=(2,2)) b = tf.random.normal(shape=(2,2)) c = a + b d = tf.square© array([[5, 2] [1, 3]], dtype=int32) Matemática no TF2 funciona como NumPy
  • 9. Desenvolvimento Produção Data Design tf.data TF Datasets Model Design Keras Estimators Training Distribution Strategy CPU GPU TPU Analisys TensorBoard Serialization Saved Model Model Repository TensorFlow HUB Browser e Node TensorFlow.JS Android, IOS, Arduino, etc TensorFlow Lite e Micro Cloud TensorFlow Services
  • 10. Construindo um modelo com TensorFlow Sequencial API + Built-in Layers Functional API + Built-in Layers Functional API +Custom Layers +Custom Metrics +Custom Losses Subclassing: write everything yourself from scratch Novos usuários, modelos simples Engenheiros com demandas padrões Engenheiros que querem maior controle em casos muito específicos Pesquisadores
  • 11. Construindo um modelo com TensorFlow Sequencial API + Built-in Layers Functional API + Built-in Layers Functional API +Custom Layers +Custom Metrics +Custom Losses Subclassing: write everything yourself from scratch Novos usuários, modelos simples Engenheiros com demandas padrões Engenheiros que querem maior controle em casos muito específicos Pesquisadores
  • 12. model = keras.Sequential() model.add(layers.Dense(32, activation=‘relu’, input_shape=(784,))) model.add(layers.Dense(32, activation=‘relu’)) model.add(layers.Dense(10, activation=‘softmax’))
  • 13. Construindo um modelo com TensorFlow Sequencial API + Built-in Layers Functional API + Built-in Layers Functional API +Custom Layers +Custom Metrics +Custom Losses Subclassing: write everything yourself from scratch Novos usuários, modelos simples Engenheiros com demandas padrões Engenheiros que querem maior controle em casos muito específicos Pesquisadores
  • 14. Exemplo de Caso de uso mais específico Visual Question Answering (VQA) Tarefa: Dada uma imagem e uma pergunta em linguagem natural, a resposta deve vir em linguagem natural Antol, S. et all; VQA: Visual Question Answering; The IEEE International Conference on Computer Vision (ICCV), 2015 Pergunta: Qual a cor do cachorro da direita? Resposta: Preto
  • 15. Antol, S. et all; VQA: Visual Question Answering; The IEEE International Conference on Computer Vision (ICCV), 2015 1 - Usar uma CNN para a imagem 2 - Usar uma LSTM para a pergunta 3 - Concatenar 4 - Classificar com Dense layers Workflow Input Question (Vectorized, Padded) Input Image (Normalized) Embedding LSTM Conv2D and Maxpooling2D stack Concatenate Dense/Softmax
  • 16. vision_model = Sequential() vision_model.add(Conv2D(64,(3,3), activation = ‘relu’, input_shape=(224, 224,3))) vision_model.add(MaxPooling2D()) vision_model.add(Flatten()) image_input = Input(shape=(224,224,3)) encode_image = vision_model(image_input) Input Question (Vectorized, Padded) Input Image (Normalized) Embedding LSTM Conv2D and Maxpooling2D stack Concatenate Dense/Softmax
  • 17. question_input = Input(shape=(100,), dtype=‘int32’, name=“Question”) embedded = Embedding(input_dim=10000, output_dim=256, input_length=100)(question_input) encoded_question = LSTM(256)(embedded) Input Question (Vectorized, Padded) Input Image (Normalized) Embedding LSTM Conv2D and Maxpooling2D stack Concatenate Dense/Softmax
  • 18. merged = layers.concatenate([encoded_image, encoded_question]) Input Question (Vectorized, Padded) Input Image (Normalized) Embedding LSTM Conv2D and Maxpooling2D stack Concatenate Dense/Softmax
  • 19. #Classificador output = Dense(1000, activation=‘softmax’)(merged) #Construção do Modelo que você pode treinar #com .fit, .train_on_batch ou GradientTape vqa_model = Model(inputs=[image_input, question_input], outputs=output) #visualizando modelo from tensorflow.keras.utils import plot_model plot_model(vqa_model, to_file=‘modelo.png’) Input Question (Vectorized, Padded) Input Image (Normalized) Embedding LSTM Conv2D and Maxpooling2D stack Concatenate Dense/Softmax
  • 20. Construindo um modelo com TensorFlow Sequencial API + Built-in Layers Functional API + Built-in Layers Functional API +Custom Layers +Custom Metrics +Custom Losses Subclassing: write everything yourself from scratch Novos usuários, modelos simples Engenheiros com demandas padrões Engenheiros que querem maior controle em casos muito específicos Pesquisadores
  • 21. class MyModel(tf.keras.Model): def "__init"__(self, num_classes=10): super(MyModel, self)."__init"__(name=‘my_model’) self.dense_1 = layers.Dense(32, activation=‘relu’) self.dense_2 = layers.Dense(num_classes,activation=‘softmax’) def call(self, inputs): x = self.dense_1(inputs) return self.dense_2(x)
  • 22. Treinando um modelo com TensorFlow model.fit() model.train_on_batch() + callbacks Custom training with GradientTape Experimento Rápido Customizado com checkpoints, Monitoramento com TensorBoard, Enviar mensagens via Slack Customizado com otimizadores e funções de perda específicos Ex: GAN Controle Total Ex: Novos algoritmos de otimização model.fit() + callbacks
  • 23. Treinando um modelo com TensorFlow model.fit() model.train_on_batch() + callbacks Custom training with GradientTape Experimento Rápido Customizado com checkpoints, Monitoramento com TensorBoard, Enviar mensagens via Slack Customizado com otimizadores e funções de perda específicos Ex: GAN Controle Total Ex: Novos algoritmos de otimização model.fit() + callbacks
  • 25. Usando Notebooks Colab e TensorFlow 2.x bit.ly/2IFyV23Notebook disponível em:
  • 26. Recursos - Libraries & Extensions
  • 27. Recursos - Libraries & Extensions
  • 31. Referências - Introduction to TensorFlow 2.0: Easier for beginners, and more powerful for experts (TF World ’19) - Josh Gordon - Tensorflow Documentation - https://tensorflow.org 
 - Google Colaboratory - https://colab.research.google.com/