TensorFlow2.0 Tutorial 8: image classification

TensorFlow 2.0 tutorial, this section depth study and practice begins  

       1. Obtain data set Fashion MNIST

  This guide uses Fashion MNIST data set, the data set contains 70,000 grayscale image 10 categories. Low-resolution image display (28 x 28 pixels) of a single piece of clothing, as follows:

  Fashion MNIST designed to replace the classic MNIST data sets, typically used as computer vision, machine learning program "Hello, World".

  We will use the network to train 60,000 images and 10,000 images to evaluate the accuracy of image classification of learning.

  (train_images, train_labels), (test_images, test_labels) = keras.datasets.fashion_mnist.load_data()

  28x28 NumPy image is an array of pixel values ​​between 0 and 255. Tag is an array of integers ranging from 0 to 9. The apparel category corresponding to the image represented by:

  Label  Class

  0  T-shirt/top

  1  Trouser

  2  Pullover

  3  Dress

  4  Coat

  5  Sandal

  6  Shirt

  7  Sneaker

  8  Bag

  9  Ankle boot

  Each image is mapped to a label. Since the class name is not included in the data set, so they are stored for use in rendering images here:

  class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',

  'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']

  2. Explore Data

  Let's explore the format of the data set before training models. The following shows the training set has 60,000 images, each represented as a 28 x 28 pixel:

  print(train_images.shape)

  print(train_labels.shape)

  print(test_images.shape)

  print(test_labels.shape)

  (60000, 28, 28)

  (60000,)

  (10000, 28, 28)

  (10000,)

  3. Data processing

  image display

  plt.figure()

  plt.imshow(train_images[0])

  plt.colorbar()

  plt.grid(False)

  plt.show()

  train_images = train_images / 255.0

  test_images = test_images / 255.0

  plt.figure(figsize=(10,10))

  for i in range(25):

  plt.subplot(5,5,i+1)

  plt.xticks ([])

  plt.yticks ([])

  plt.grid(False)

  plt.imshow(train_images[i], cmap=plt.cm.binary)

  plt.xlabel(class_names[train_labels[i]])

  plt.show()

  4. Network configuration

  model = keras.Sequential(

  [

  layers.Flatten(input_shape=[28, 28]),

  layers.Dense(128, activation='relu'),

  layers.Dense(10, activation='softmax')

  ])

  model.compile(optimizer='adam',

  loss='sparse_categorical_crossentropy',

  metrics=['accuracy'])

  5. Training and Validation

  model.fit(train_images, train_labels, epochs=5)

  Epoch 1/5

  60000/60000 [==============================] - 3s 58us/sample - loss: 0.4970 - accuracy: 0.8264

  Epoch 2/5

  60000/60000 [==============================] - 3s 43us/sample - loss: 0.3766 - accuracy: 0.8651

  Epoch 3/5

  60000/60000 [==============================] - 3s 42us/sample - loss: 0.3370 - accuracy: 0.8777

  Epoch 4/5

  60000/60000 [==============================] - 3s 42us/sample - loss: 0.3122 - accuracy: 0.8859

  Epoch 5/5

  60000/60000 [==============================] - 3s 42us/sample - loss: 0.2949 - accuracy: 0.8921

  model.evaluate(test_images, test_labels)

  [0.3623474566936493, 0.8737]

  6. forecast

  predictions = model.predict(test_images)

  print(predictions[0])

  print(np.argmax(predictions[0]))

  print(test_labels[0])

  [2.1831402e-05 1.0357383e-06 1.0550731e-06 1.3231372e-06 8.0873624e-06

  2.6805745e-02 1.2466960e-05 1.6174167e-01 1.4259206e-04 8.1126428e-01]

  9

  9

  def plot_image(i, predictions_array, true_label, img):

  predictions_array, true_label, img = predictions_array[i], 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)

  if predicted_label == true_label:

  color = 'blue'

  else:  Wuxi abortion how much money http://www.xaytsgyy.com/

  color = 'red'

  plt.xlabel("{} {:2.0f}% ({})".format(class_names[predicted_label],

  100*np.max(predictions_array),

  class_names[true_label]),

  color=color)

  def plot_value_array(i, predictions_array, true_label):

  predictions_array, true_label = predictions_array[i], true_label[i]

  plt.grid(False)

  plt.xticks ([])

  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')

  i = 0

  plt.figure(figsize=(6,3))

  plt.subplot (1,2,1)

  plot_image(i, predictions, test_labels, test_images)

  plt.subplot (1,2,2)

  plot_value_array(i, predictions, test_labels)

  plt.show()

  

png

 

  # Plot the first X test images, their predicted label, and the true label

  # Color correct predictions in blue, incorrect predictions in red

  num_rows = 5

  NUM_COLS = 3

  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, test_labels, test_images)

  plt.subplot(num_rows, 2*num_cols, 2*i+2)

  plot_value_array(i, predictions, test_labels)

  plt.show()

  img = test_images[0]

  img = (np.expand_dims(img,0))

  print(img.shape)

  predictions_single = model.predict(img)

  print(predictions_single)

  plot_value_array(0, predictions_single, test_labels)

  _ = plt.xticks(range(10), class_names, rotation=45)

  (1, 28, 28)

  [[2.1831380e-05 1.0357381e-06 1.0550700e-06 1.3231397e-06 8.0873460e-06

  2.6805779e-02 1.2466959e-05 1.6174166e-01 1.4259205e-04 8.1126422e-01]]

  

png

Guess you like

Origin www.cnblogs.com/gnz49/p/11429915.html