?? A UCRÂNIA ESTÁ SENDO ATACADA PELO EXÉRCITO RUSSO. CIVIS ESTÃO SENDO MORTOS. ÁREAS RESIDENCIAIS ESTÃO SENDO BOMBARDADAS.
- Ajude a Ucrânia através de:
- Fundação de Caridade Serhiy Prytula
- Fundação de caridade Come Back Alive
- Banco Nacional da Ucrânia
- Mais informações sobre war.ukraine.ua e MFA da Ucrânia
Esta é uma coleção de experimentos interativos de aprendizado de máquina. Cada experimento consiste em ?️ caderno Jupyter/Colab (para ver como um modelo foi treinado) e ? página de demonstração (para ver um modelo em ação diretamente no seu navegador).
Você também pode estar interessado em GPT caseiro • JS
️ Este repositório contém experimentos de aprendizado de máquina e não códigos e modelos prontos para produção, reutilizáveis, otimizados e ajustados. Trata-se antes de uma sandbox ou de um playground para aprender e experimentar diferentes abordagens, algoritmos e conjuntos de dados de aprendizado de máquina. Os modelos podem não ter um bom desempenho e há espaço para overfitting/underfitting.
A maioria dos modelos nesses experimentos foi treinada usando TensorFlow 2 com suporte Keras.
O aprendizado supervisionado ocorre quando você tem variáveis de entrada X
e uma variável de saída Y
e usa um algoritmo para aprender a função de mapeamento da entrada para a saída: Y = f(X)
. O objetivo é aproximar a função de mapeamento tão bem que, quando você tiver novos dados de entrada X
, possa prever as variáveis de saída Y
para esses dados. É chamada de aprendizagem supervisionada porque o processo de aprendizagem de um algoritmo a partir do conjunto de dados de treinamento pode ser pensado como um professor supervisionando o processo de aprendizagem.
Um perceptron multicamadas (MLP) é uma classe de rede neural artificial feedforward (RNA). Os perceptrons multicamadas são às vezes chamados de redes neurais "vanilla" (compostas de múltiplas camadas de perceptrons), especialmente quando possuem uma única camada oculta. Ele pode distinguir dados que não são linearmente separáveis.
Experimentar | Demonstração e treinamento de modelo | Etiquetas | Conjunto de dados | |
---|---|---|---|---|
Reconhecimento de dígitos manuscritos (MLP) | MLP | MNIST | ||
Reconhecimento de esboço manuscrito (MLP) | MLP | QuickDraw |
Uma rede neural convolucional (CNN ou ConvNet) é uma classe de redes neurais profundas, mais comumente aplicada à análise de imagens visuais (fotos, vídeos). Eles são usados para detectar e classificar objetos em fotos e vídeos, transferência de estilo, reconhecimento facial, estimativa de pose, etc.
Experimentar | Demonstração e treinamento de modelo | Etiquetas | Conjunto de dados | |
---|---|---|---|---|
Reconhecimento de dígitos manuscritos (CNN) | CNN | MNIST | ||
Reconhecimento de esboço manuscrito (CNN) | CNN | QuickDraw | ||
Pedra Papel Tesoura (CNN) | CNN | RPS | ||
Tesoura de pedra e papel (MobilenetV2) | MobileNetV2 , Transfer learning , CNN | RPS, ImageNet | ||
Detecção de objetos (MobileNetV2) | MobileNetV2 , SSDLite , CNN | COCO | ||
Classificação de imagens (MobileNetV2) | MobileNetV2 , CNN | ImageNet |
Uma rede neural recorrente (RNN) é uma classe de redes neurais profundas, mais comumente aplicada a dados baseados em sequência, como fala, voz, texto ou música. Eles são usados para tradução automática, reconhecimento de fala, síntese de voz, etc.
Experimentar | Demonstração e treinamento de modelo | Etiquetas | Conjunto de dados | |
---|---|---|---|---|
Somatória de Números (RNN) | LSTM , Sequence-to-sequence | Gerado automaticamente | ||
Geração de Texto de Shakespeare (RNN) | LSTM , Character-based RNN | Shakespeare | ||
Geração de texto da Wikipédia (RNN) | LSTM , Character-based RNN | Wikipédia | ||
Geração de Receita (RNN) | LSTM , Character-based RNN | Caixa de receitas |
O aprendizado não supervisionado ocorre quando você tem apenas os dados de entrada X
e nenhuma variável de saída correspondente. O objetivo da aprendizagem não supervisionada é modelar a estrutura ou distribuição subjacente nos dados para aprender mais sobre os dados. Estas são chamadas de aprendizagem não supervisionada porque, ao contrário da aprendizagem supervisionada acima, não há respostas corretas e não há professor. Os algoritmos são deixados por conta própria para descobrir e apresentar a estrutura interessante dos dados.
Uma rede adversária generativa (GAN) é uma classe de estruturas de aprendizado de máquina onde duas redes neurais competem entre si em um jogo. Dois modelos são treinados simultaneamente por um processo adversário. Por exemplo, um gerador (“o artista”) aprende a criar imagens que parecem reais, enquanto um discriminador (“o crítico de arte”) aprende a distinguir imagens reais de falsas.
Experimentar | Demonstração e treinamento de modelo | Etiquetas | Conjunto de dados | |
---|---|---|---|---|
Geração de Roupas (DCGAN) | DCGAN | Moda MNIST |
# Create "experiments" environment (from the project root folder).
python3 -m venv .virtualenvs/experiments
# Activate environment.
source .virtualenvs/experiments/bin/activate
# or if you use Fish...
source .virtualenvs/experiments/bin/activate.fish
Para sair de um ambiente, execute deactivate
.
# Upgrade pip and setuptools to the latest versions.
pip install --upgrade pip setuptools
# Install packages
pip install -r requirements.txt
Para instalar novos pacotes, execute pip install package-name
. Para adicionar novos pacotes aos requisitos, execute pip freeze > requirements.txt
.
Para brincar com os notebooks Jupyter e ver como os modelos foram treinados, você precisa iniciar um servidor Jupyter Notebook.
# Launch Jupyter server.
jupyter notebook
O Jupyter estará disponível localmente em http://localhost:8888/
. Os cadernos com experimentos podem ser encontrados na pasta de experiments
.
A aplicação demo é feita no React por meio do create-react-app.
# Switch to demos folder from project root.
cd demos
# Install all dependencies.
yarn install
# Start demo server on http.
yarn start
# Or start demo server on https (for camera access in browser to work on localhost).
yarn start-https
As demonstrações estarão disponíveis localmente em http://localhost:3000/
ou em https://localhost:3000/
.
O ambiente converter
é usado para converter os modelos que foram treinados durante os experimentos do formato .h5
Keras para formatos compreensíveis em Javascript (formatos tfjs_layers_model
ou tfjs_graph_model
com arquivos .json
e .bin
) para uso posterior com TensorFlow.js no aplicativo Demo.
# Create "converter" environment (from the project root folder).
python3 -m venv .virtualenvs/converter
# Activate "converter" environment.
source .virtualenvs/converter/bin/activate
# or if you use Fish...
source .virtualenvs/converter/bin/activate.fish
# Install converter requirements.
pip install -r requirements.converter.txt
A conversão dos modelos keras
para os formatos tfjs_layers_model
/ tfjs_graph_model
é feita pelo tfjs-converter:
Por exemplo:
tensorflowjs_converter --input_format keras
./experiments/digits_recognition_mlp/digits_recognition_mlp.h5
./demos/public/models/digits_recognition_mlp
️ Converter os modelos para formatos compreensíveis JS e carregá-los diretamente no navegador pode não ser uma boa prática, pois neste caso o usuário pode precisar carregar dezenas ou centenas de megabytes de dados no navegador, o que não é eficiente. Normalmente, o modelo está sendo servido pelo back-end (ou seja, TensorFlow Extended) e, em vez de carregar tudo no navegador, o usuário fará uma solicitação HTTP leve para fazer uma previsão. Mas como o aplicativo Demo é apenas um experimento e não um aplicativo pronto para produção e por uma questão de simplicidade (para evitar ter um back-end em funcionamento), estamos convertendo os modelos para formatos JS compreensíveis e carregando-os diretamente no navegador.
Versões recomendadas:
> 3.7.3
.>= 12.4.0
.>= 1.13.0
. Caso você tenha o Python versão 3.7.3
poderá enfrentar RuntimeError: dictionary changed size during iteration
ao tentar import tensorflow
(veja o problema).