Plotando o Modelo e Suas Previsões

Recursos do Minicurso


Agora que conseguimos classificar a categoria de uma peça de roupa individual usando nosso modelo, vamos visualizar essas previsões criando gráficos de barras para uma imagem específica.

Classificação Prevista

A função plot_image exibe uma imagem junto com sua classificação prevista, o nível de confiança do modelo para aquela categoria e a classificação real (usada como referência).

Nível de confiança é a medida de quão certo o modelo está da sua resposta. Por exemplo, se o meteorologista disser que vai chover amanhã com 90% de certeza, ele acredita muito nessa previsão, mas ainda existe uma chance de 10% de estar errado. Quanto mais próximo de 100%, maior a certeza.

Copie a função plot_image no seu notebook do Google Colab:

def plot_image(i, predictions_array, true_label, img):
  true_label, img = true_label[i], img[i]
  plt.grid(False)
  plt.xticks([])
  plt.yticks([])

  plt.imshow(img, cmap=plt.cm.binary)

  predicted_label = np.argmax(predictions_array)
  color = 'blue' if predicted_label == true_label else 'red'

  plt.xlabel("{} {:2.0f}% ({})".format(
      class_names[predicted_label],
      100*np.max(predictions_array),
      class_names[true_label]),
      color=color)

Visualizando os Níveis de Confiança

A função plot_value_array cria um gráfico de barras com os níveis de confiança gerados pelo modelo. O eixo y representa o nível de confiança, e o eixo x as categorias (camiseta/top, calça, etc).

def plot_value_array(i, predictions_array, true_label):
  true_label = true_label[i]
  plt.grid(False)
  plt.xticks(range(10))
  plt.yticks([])
  thisplot = plt.bar(range(10), predictions_array, color="#777777")
  plt.ylim([0, 1])
  predicted_label = np.argmax(predictions_array)

  thisplot[predicted_label].set_color('red')
  thisplot[true_label].set_color('blue')

Usando as Funções

Use o código abaixo para chamar as funções:

i = 0
plt.figure(figsize=(6,3))
plt.subplot(1,2,1)
plot_image(i, predictions[i], test_labels, test_images)
plt.subplot(1,2,2)
plot_value_array(i, predictions[i], test_labels)
plt.show()

Gráfico de previsão de bota

Neste exemplo, o modelo previu corretamente que o item é uma bota com 99% de confiança. A categoria entre parênteses é a correta, servindo como referência.

Modelos nem sempre são perfeitos. Vamos ver isso no próximo exemplo.

i = 12
plt.figure(figsize=(6,3))
plt.subplot(1,2,1)
plot_image(i, predictions[i], test_labels, test_images)
plt.subplot(1,2,2)
plot_value_array(i, predictions[i], test_labels)
plt.show()

Gráfico de previsão incorreta

Neste caso, o modelo previu que o item era uma sandália com 96% de confiança, mas era na verdade um tênis.

Mais Exemplos

Para visualizar as primeiras 25 imagens de teste com as previsões e os rótulos reais:

num_rows = 5
num_cols = 5
num_images = num_rows * num_cols
plt.figure(figsize=(2*2*num_cols, 2*num_rows))
for i in range(num_images):
  plt.subplot(num_rows, 2*num_cols, 2*i+1)
  plot_image(i, predictions[i], test_labels, test_images)
  plt.subplot(num_rows, 2*num_cols, 2*i+2)
  plot_value_array(i, predictions[i], test_labels)
plt.tight_layout()
plt.show()

Grid de 25 imagens com previsões

O que você acha das previsões do modelo? Você ficaria satisfeito com essa taxa de acerto?