Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Keras com Tensorflow: Produtivo, amigável e modular

Keras com Tensorflow: Produtivo, amigável e modular

Overview sobre o Keras e como iniciar o uso do framework.

Jeziel Lago

January 17, 2019
Tweet

More Decks by Jeziel Lago

Other Decks in Technology

Transcript

  1. 2 jeziellago • Entusiasta de Machine Learning • Computer Vision

    Expert Nanodegree (Udacity) • Mestrado em Computação Aplicada (em curso) ◦ Classificação de imagens histopatológicas com DL • Machine Learning em apps Android Jeziel Lago
  2. Roteiro 4 Callbacks 3 Construindo e treinando modelos Por quê

    usar Keras? 2 1 Keras: “A biblioteca de deep learning do Python” 5 Keras Applications
  3. Keras: “A biblioteca de deep learning do Python” • API

    de redes neurais de alto nível • Permite prototipação rápida • Suporta CNN e RNN • Roda em CPU e GPU • Compatível com Python 2.7-3.6 François Chollet
  4. Keras prioriza a experiência do desenvolvedor “Keras é uma API

    desenvolvida para seres humanos, e não máquinas” • Fácil de aprender • Simplifica casos de uso comuns • Feedbacks mais claros em casos de erros • Integra nativamente com o Tensorflow
  5. Keras tem ampla adoção na indústria e na comunidade de

    pesquisa Deep learning frameworks ranking computed by Jeff Hale, based on 11 data sources across 7 categories
  6. Viabiliza a transformação de modelos em produtos Deploy e execução

    do seu modelo em: • iOS, com o Core ML da Apple • Android, com o Tensorflow Lite / ML Kit • Browser, com o JavaScript (Keras.js / WebDNN) • Google Cloud, via Tensorflow-Serving • Python web backend como um app Flask • JVM, com o DL4J (SkyMind) • Raspberry Pi
  7. Portabilidade entre diversos backends e ambientes • Tensorflow backend (Google)

    • CNTK backend (Microsoft) • Theano backend • NVIDIA GPUs • Google TPUs • OpenCL
  8. Desenvolvimento apoiado por grandes players de DL • Google -

    tensorflow.keras • Microsoft - CNTK backend • Amazon AWS - fork do Keras com suporte a MXNet • Uber e Apple - Core ML • NVIDIA
  9. Por onde começar from tensorflow import keras pip install keras

    Instalar o Tensorflow import keras ou 1. 2.
  10. Modelos Sequenciais from keras.models import Sequential . ... Camada 1

    Camada 2 Camada 3 Modelo from keras.layers import * É uma pilha de camadas
  11. Modelos Sequenciais - Layers from keras.layers import Dense from keras.layers

    import Activation from keras.layers import Dropout from keras.layers import Input from keras.layers import Flatten from keras.layers import Conv2D from keras.layers import Conv3D from keras.layers import MaxPooling2D from keras.layers import RNN from keras.layers import LSTM from keras.layers import *
  12. Modelos Sequenciais - Exemplo 1 - [inputs] from keras.models import

    Sequential from keras.layers import Dense model = Sequential() model.add(Dense(32, input_dim=128) model = Sequential() model.add(Dense(32, input_shape=(128,)) ou
  13. Modelos Sequenciais - Exemplo 2 - [activation] from keras.models import

    Sequential from keras.layers import Dense model = Sequential() model.add(Dense(32, activation='relu') model.add(Dense(1, activation='sigmoid')
  14. Modelos Sequenciais - Exemplo 3 [keras.layers.Activation] from keras.models import Sequential

    from keras.layers import Dense, Activation model = Sequential() model.add(Dense(32, input_dim=128)) model.add(Activation('relu')) model.add(Dense(2)) model.add(Activation('softmax'))
  15. Modelos Sequenciais - Exemplo 4 [construtor] from keras.models import Sequential

    from keras.layers import Dense, Activation model = Sequential([ Dense(32, input_shape=(128,)), Activation('relu'), Dense(2), Activation('softmax'), ])
  16. Modelo Funcional from keras.models import Model input layer_1 layer_5 Modelo

    output_main layer_2 layer_3 layer_4 output_aux input_aux
  17. Modelo Funcional from keras.models import Model from keras.layers import Input,

    Dense # camada de input inputs = Input(shape=(784,)) x = Dense(64, activation='relu')(inputs) x = Dense(64, activation='relu')(x) predictions = Dense(10, activation='softmax')(x) # cria o modelo com as camadas definidas acima model = Model(inputs=inputs, outputs=predictions)
  18. Compilando o modelo Otimizador + Função de perda + Métricas

    Adam RMSProp SGD Adagrad Accuracy Custom ... Binary Cross Entropy Categorical Cross Entropy MSE model.compile(...)
  19. Compilando o modelo [optimizer] adam_optimizer = Adam(lr=0.001) model.compile(optimizer=adam_optimizer, loss='binary_crossentropy', metrics=['accuracy'])

    model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) ou from keras.optimizers import Adam
  20. Compilando o modelo [loss] # classificador binário model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

    # classificador multiclasse model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) # mean squared error model.compile(optimizer='adam', loss='mse', metrics=['accuracy'])
  21. Treinando o modelo # ‘validation_data’ não é obrigatório model.fit(train_X, train_labels,

    epochs=10, batch_size=128, validation_data=(validation_X, validation_labels))
  22. Avaliando o modelo scores = model.evaluate(test_X, test_labels) test_loss = scores['loss']

    test_accur = scores['acc'] prediction = model.predict(test_X)
  23. Carregando um modelo salvo from keras.models import load_model model =

    load_model('my_model.h5') # use o modelo salvo para fazer predições prediction = model.predict(my_data)
  24. Keras Callbacks “Conjunto de funções aplicadas em determinados estágios do

    treinamento.” • History • ModelCheckPoint • EarlyStopping • TensorBoard • ...
  25. Keras Callbacks: History hist_train = model.fit(train_X,train_labels,epochs=10,batch_size=128, validation_data=(validation_X, validation_labels)) # acurácia

    e perda de treino loss_train = hist_train.history['loss'] acc_train = hist_train.history['acc'] # acurácia e perda de validação loss_valid = hist_train.history['val_loss'] acc_valid = hist_train.history['val_acc']
  26. Keras Callbacks: TensorBoard tensorboard = TensorBoard(log_dir='./my_logs', histogram_freq=10) model.fit(train_X, train_labels, epochs=10,

    batch_size=128, callbacks=[tensorboard]) $ tensorboard --logdir=my_logs from keras.callbacks import TensorBoard
  27. Keras Applications Modelos treinados na ‘ImageNet’, disponíveis no Keras. •

    Xception • VGG16 • VGG19 • ResNet50 • InceptionV3 • InceptionResNetV2 • MobileNet • DenseNet • NASNet • MobileNetV2 from keras.applications import *