O documento apresenta uma introdução ao Deep Learning, discutindo conceitos como redes neurais, frameworks e demonstrações práticas com TensorFlow. O palestrante também fornece links para aprendizado adicional sobre o tema.
4. Deep Learning
Área de pesquisa em machine learning com objetivo de aproximar
machine learning de Inteligência artificial.
Uma estrutura de Deep Learning é uma arquitetura de vários niveis
Composta de unidades simples e todas sujeitas a treinamento, muitas
possuem transformações não lineares.
Cada camada tranforma sua entrada para melhorar suas
propriedades
Seleciona e amplifica apenas aspectos relevantes
9. • Plataforma de computação paralela, que permite ganhos
significativos de performance usando unidade de processamento
gráfico (GPU).
• Surgimento no final da década de 90
• Antigamente utilizava linguagem de baixo nível (ex. OpenGL)
• Em 2006 surgiu a CUDA
• Cuda ToolKit suporta linguagens C, C++, Python e Fortran
CUDA
http://www.nvidia.com.br/object/cuda_home_new_br.html
10. Deep Learning - Layers
https://devblogs.nvidia.com/parallelforall/accelerate-machine-learning-cudnn-deep-neural-
network-library/
Hierarquia das Layers para identificação de rosto.
11. Redes Neurais
• Arquiteturas que tem trazido muitos resultados nos dias atuais:
• Convolutional Neural Networks (CNN)
• Ideal para trabalhar com imagens (Dominante neste aspecto)
• Processa dados em forma de múltiplos arrays
• Camada de Input bidimensional
• Características analisadas em pixels da imagem
• Recurrent Neural Network (RNN)
• Faz uso de informações sequenciais, muito avançadas, pouca documentação
• Bons resultados em Processamento de linguagem natural.
• LSTM (Long Short term-memory), Ideal para trabalhar com dados sequenciais
Identificar próxima palavra de uma frase.
• Executa a mesma tarefa para cada elemento de uma sequência, tornando a
saída dependente dos cálculos anteriores.
16. • Escrita de novos episódios de GOT, rede LSTM link do projeto no
github aqui.
• Detecção de câncer por redes neurais convolucionais, leia mais aqui.
• Rede LSTM completa imagens faltando pedaços, link
Redes Neurais,
alguns exemplos
18. Open Source Interface Plataform Written In Cuda Support
YES PYTHON, LINUX, C++ YES
MATLAB MAC OS X,
WINDOWS
YES PYTHON, LINUX, C++ YES
C++ WINDOWS,
MAC OS X
YES PYTHON LINUX, PYTHON YES
MAC OS X,
WINDOWS
YES PYTHON, LINUX, C++,PYTHON YES
R, LUA, C,C++ MAC OS X,
,JAVA, GO WINDOWS
YES PYTHON, LINUX, PYTHON YES
R MAC OS X,
WINDOWS
YES LUA,C,C++ LINUX, C, LUA YES
MAC OS X,
WINDOWS,
ANDROID,IOS
19. Exemplo de hoje
Biblioteca do Google
Documentação muito rica (Inglês)
Muitos exemplos na internet (Mnist, desafios do Kaggle, etc)
Baseado em Tensores e grafos
Comunidade ativa
CPU + GPU
Uso de GPU Necessita de CUDA ToolKit, cuDNN
Uso de GPU não necessita alterações no codigo
20. TensorFlow
• Biblioteca de computação numérica onde os dados fluem através dos
grafos
• Os dados são representados por arrays n-dimensionais chamados
tensores
• Os nodes do grafo representam operações matemáticas
• Programação diferenciada. Nada acontece até executar a sessão
23. Arquitetura
https://www.tensorflow.org/extend/architecture
Client, Inicia o fluxo de
Dados executando a sessão
Session.run() Faz a distribuição entre
As workers, para criação
De subgrafos.
Comunicação CPU + GPU
Utiliza API cudaMemcpyAsync.
E para comunicação multi GPU
Utiliza biblioteca NCCL.
tf.contrib.nccl
Contém mais de 200 operações
Padrão. Manipulações matemáticas
, manipulação de matriz, grande parte
Usa se beneficia de bibliotecas
Como Eigen::Tensor e cuDNN.
24. Estrutura de código
Criar constrante
Iniciar sessão
Executar operação
Import tensorflow as tf
# Cria Constant chamada Hello com a string “Hello, TensorFlow”
Hello = tf.constant(‘Hello, TensorFlow’)
# Cria sessão
Sess = tf.session()
# Executa a sessão e imprime resultado
Print(sess.run(hello))
25. TensorBoard
• Interface gráfica, mas não para treinar modelos de Deep Learning e Machine Learning
• Permite a visualização dos grafos
• Ideal para analisar camadas de redes neurais
• Visualização de até 36 Mil Nodes
26. Trabalhando com Imagens
• Transforma imagem em matriz multi-dimensional
• Ótica por:
• Quantidade de Pixels
• Canais de cores
• Largura
• Altura
• Cada camada é responsável por analisar uma parte da foto
• Borda
• Fundo
• Slyce para detecção de rostos e objetos
27. Trabalhando com Imagens
Demo
# Carrega Imagem
import matplotlib.image as mp_image
filename = "image.jpg"
input_image = mp_image.imread(filename)
# Dimensões
print ('input dim = {}'.format(input_image.ndim))
# Shape
print ('input shape = {}'.format(input_image.shape))
# Coleta dimensões
height, width, depth = input_image.shape
# Imprime a imagem
import matplotlib.pyplot as plt
plt.imshow(input_image)
plt.show()
import tensorflow as tf
x = tf.Variable(input_image, name = 'x')
model = tf.initialize_all_variables()
with tf.Session() as session:
x = tf.transpose(x, perm = [1,0,2])
session.run(model)
result=session.run(x)
plt.imshow(result)
plt.show()