Visualizar no TensorFlow.org Executar no Google Colab Exibir código-fonte no GitHub Download notebook

Este tutorial demonstra a formação de um simples Convolucionais Neural Network (CNN) para classificar CIFAR imagens. Porque este tutorial usa a API sequencial de Keras, criando e treinando nosso modelo vai levar apenas algumas linhas de código.,

importar o fluxo de tensores

import tensorflow as tffrom tensorflow.keras import datasets, layers, modelsimport matplotlib.pyplot as plt

descarregar e preparar o conjunto de dados CIFAR10

o conjunto de dados CIFAR10 contém 60 000 imagens a cores em 10 classes, com 6 000 imagens em cada classe. O conjunto de dados está dividido em 50 mil imagens de treino e 10 mil imagens de teste. As classes são mutuamente exclusivas e não há sobreposição entre elas.

Downloading data from https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz170500096/170498071 - 11s 0us/step

verifique os dados

para verificar se o conjunto de dados parece correcto, vamos desenhar as primeiras 25 imagens do conjunto de treino e mostrar o nome da classe por baixo de cada imagem.,

Criar o convolucionais base

A 6 linhas de código abaixo definem a convolucionais da base de dados utilizando um padrão comum: uma pilha de Conv2D e MaxPooling2D camadas.

Como Entrada, uma CNN toma tensores de forma (image_eight, image_ width, color_channels), ignorando o tamanho do lote. Se você é novo nestas dimensões, color_channels refere-se a (R,G,B). Neste exemplo, você irá configurar o nosso CNN para processar entradas de forma (32, 32, 3), que é o formato de imagens CIFAR. Você pode fazer isso passando o argumento input_shape para a nossa primeira camada.,vamos mostrar a arquitetura do nosso modelo até agora.

model.summary()

acima, você pode ver que a saída de cada camada Conv2D e MaxPooling2D é um tensor 3D de forma (altura, largura, canais). As dimensões largura e altura tendem a diminuir à medida que você vai mais fundo na rede. O número de canais de saída para cada camada Conv2D é controlado pelo primeiro argumento (por exemplo, 32 ou 64). Tipicamente, como a largura e altura encolhem, você pode permitir (computacionalmente) adicionar mais canais de saída em cada camada Conv2D.,

adicione camadas densas no topo

para completar o nosso modelo, você irá alimentar o último tensor de saída da base convolucional (de forma (4, 4, 64)) em uma ou mais camadas densas para realizar a classificação. Camadas densas tomam vetores como entrada (que são 1D), enquanto a saída atual é um tensor 3D. Primeiro, você vai alisar (ou desenrolar) a saída 3D para 1D, em seguida, adicionar uma ou mais camadas densas no topo. CIFAR tem 10 classes de Saída, então você usa uma camada densa final com 10 saídas.

model.add(layers.Flatten())model.add(layers.Dense(64, activation='relu'))model.add(layers.Dense(10))

Aqui está a arquitectura completa do nosso modelo.,

model.summary()

como você pode ver, nossas saídas (4, 4, 64) foram achatadas em vetores de forma (1024) antes de passar por duas camadas densas.

Compilar e treinar o modelo

Avaliar o modelo

313/313 - 1s - loss: 0.8840 - accuracy: 0.7157

print(test_acc)