рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ TensorFlow: рдЫрд╡рд┐ рд╡рд░реНрдЧреАрдХрд░рдг

рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЛ рд▓реЗрдЦ "рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ : рдореВрд▓ рд╡рд░реНрдЧреАрдХрд░рдг" рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВред



рдпрд╣ рд╕реНрдиреАрдХрд░реНрд╕ рдФрд░ рд╢рд░реНрдЯ рдЬреИрд╕реЗ рдХрдкрдбрд╝реЛрдВ рдХреА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдореЙрдбрд▓ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рд╣реИред рдПрдХ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдЬрдЧрд░ рдФрд░ рдЯреЗрдиреНрд╕рд░рдлреНрд▓реЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред


TensorFlow рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ


рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


  1. numpy (рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ: рдкрд╛рдЗрдк рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ numpy)
  2. matplotlib (рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ: matplotlib рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ)
  3. рдХреЗрд░рд╕ (рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ: рдкрд╛рдЗрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрд╕)
  4. jupyter (рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ: рдкрд╛рдЗрдк рдЬреНрдпреВрдкрд┐рдЯрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ)

рдкрд┐рдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛: рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░, рдкрд┐рдк рдЗрдВрд╕реНтАНрдЯреЙрд▓ рдЯреЗрдВрд╕реЛрд░рдлреНрд▓реЛ рд▓рд┐рдЦреЗрдВ
рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ, рддреЛ рдЖрдк .whl рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдкрд╛рдЗрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ file_path \ file_name.white.l


TensorFlow рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕реНрдерд╛рдкрдирд╛ рдЧрд╛рдЗрдб
рдЬреБрдкрд┐рдЯрд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреНрдпреВрдкрд┐рдЯрд░ рдиреЛрдЯрдмреБрдХ рд▓рд┐рдЦреЗрдВред


рд╢реБрд░реБрдЖрдд рд╣реЛ рд░рд╣реА рд╣реИ


#  import tensorflow as tf from tensorflow import keras import numpy as np import matplotlib.pyplot as plt 

рдпрд╣ рдЧрд╛рдЗрдб рдлреИрд╢рди рдПрдордПрдирдЖрдИрдПрд╕рдЯреА рдбреЗрдЯрд╛рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ 10 рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ 70,000 рд╕реНрдХреЗрд▓ рдЪрд┐рддреНрд░ рд╣реИрдВред рдЪрд┐рддреНрд░ рдХрдо рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд╡рд╛рд▓реЗ рдХрдкрдбрд╝реЛрдВ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрдЗрдЯрдо рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ (28 рдмрд╛рдп 28 рдкрд┐рдХреНрд╕рд▓):



рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо 60,000 рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрдЯрд╡рд░реНрдХ рдиреЗ рдХрд┐рддрдиреА рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЖрдк рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рдЖрдпрд╛рдд рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдХреЗ TensorFlow рд╕реЗ рд╕реАрдзреЗ рдлреИрд╢рди MNIST рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВ:


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

рдПрдХ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ рдбреЗрдЯрд╛рд╕реЗрдЯ рдЪрд╛рд░ NumPy рд╕рд░рдгрд┐рдпреЛрдВ рджреЗрддрд╛ рд╣реИ:


  1. Arrays train_images рдФрд░ train_labels рдбреЗрдЯрд╛ рд╣реИ рдЬреЛ рдореЙрдбрд▓ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ
  2. рдореЙрдбрд▓ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рдгрд┐рдпреЛрдВ test_images рдФрд░ test_labels рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЫрд╡рд┐рдпрд╛рдБ 28x28 рдиреНрдпреВрдордкреЗ рд╕рд░рдгрд┐рдпрд╛рдБ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдкрд┐рдХреНрд╕реЗрд▓ рдорд╛рди 0 рд╕реЗ 255 рддрдХ рд╣реИрдВред рд▓реЗрдмрд▓ 0 рд╕реЗ 9 рддрдХ рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИрдВред рд╡реЗ рдХрдкрдбрд╝реЛрдВ рдХреЗ рд╡рд░реНрдЧ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВ:


рдорд╛рд░реНрдХрд╡рд░реНрдЧ
0рдЯреА-рд╢рд░реНрдЯ (рдЯреА-рд╢рд░реНрдЯ)
1рдкрддрд▓реВрди (рдкреИрдВрдЯ)
2рд╕реНрд╡реЗрдЯрд░ (рд╕реНрд╡реЗрдЯрд░)
3рдбреНрд░реЗрд╕ (рдкреЛрд╢рд╛рдХ)
4рдХреЛрдЯ (рдХреЛрдЯ)
5рдЪрдкреНрдкрд▓ (рд╕реИрдВрдбрд▓)
6рд╢рд░реНрдЯ (рд╢рд░реНрдЯ)
7рд╕реНрдиреАрдХрд░ (рд╕реНрдиреАрдХрд░реНрд╕)
8рдмреИрдЧ (рдмреИрдЧ)
9рдЯрдЦрдиреЗ рдХреЗ рдЬреВрддреЗ (рдЯрдЦрдиреЗ рдХреЗ рдЬреВрддреЗ)

рд╡рд░реНрдЧ рдирд╛рдо рдбреЗрдЯрд╛ рд╕реЗрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:


 class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot'] 

рдбреЗрдЯрд╛ рдХреА рдЦреЛрдЬ


рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдкреНрд░рд╛рд░реВрдк рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред


 train_images.shape #    60 000 ,     28 x 28  test_images.shape #    10 000 ,     28 x 28  len(train_labels) #   60 000  len(test_labels) #   10 000  train_labels #       0  9 (  3    3 ) 

рдбреЗрдЯрд╛ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ


рдореЙрдбрд▓ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдбреЗрдЯрд╛ рдХреЛ рдкреВрд░реНрд╡-рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗрдЯ рдореЗрдВ рдкрд╣рд▓реА рдЫрд╡рд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдкрд┐рдХреНрд╕реЗрд▓ рдорд╛рди 0 рд╕реЗ 255 рддрдХ рдХреА рд╕реАрдорд╛ рдореЗрдВ рд╣реИрдВ:


 plt.figure() plt.imshow(train_images[0]) plt.colorbar() plt.grid(False) 


рд╣рдо рдЗрди рдорд╛рдиреЛрдВ рдХреЛ 0 рд╕реЗ 1 рддрдХ рдХреА рд╕реАрдорд╛ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ:


 train_images = train_images / 255.0 test_images = test_images / 255.0 

рд╣рдо рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗрдЯ рд╕реЗ рдкрд╣рд▓реЗ 25 рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЫрд╡рд┐ рдХреЗ рддрд╣рдд рдХрдХреНрд╖рд╛ рдХрд╛ рдирд╛рдо рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдбреЗрдЯрд╛ рд╕рд╣реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реИред


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


рдореЙрдбрд▓ рдмрд┐рд▓реНрдбрд┐рдВрдЧ


рдПрдХ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдХреА рдЯреНрдпреВрдирд┐рдВрдЧ рдкрд░рддреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред


рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдореБрдЦреНрдп рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХ рдкрд░рдд рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЧрд╣рд░реА рд╢рд┐рдХреНрд╖рд╛ рдореЗрдВ рд╕рд╛рдзрд╛рд░рдг рдкрд░рддреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╣реЛрддрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░рддреЛрдВ, рдЬреИрд╕реЗ рдХрд┐ tf.keras.layers.Dense, рдореЗрдВ рдРрд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ рдЬреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рд╕реАрдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВред


 model = keras.Sequential([ keras.layers.Flatten(input_shape=(28, 28)), keras.layers.Dense(128, activation=tf.nn.relu), keras.layers.Dense(10, activation=tf.nn.softmax) ]) 

рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдкрд╣рд▓реА рдкрд░рдд tf.keras.layers.Flatten 2d рд╕рд░рдгреА (28 рдмрд╛рдп 28 рдкрд┐рдХреНрд╕рд▓) рд╕реЗ рдЫрд╡рд┐ рдкреНрд░рд╛рд░реВрдк рдХреЛ 28 рдбреА 28 = 784 рдкрд┐рдХреНрд╕рд▓ рд╕реЗ 1 рдбреА рд╕рд░рдгреА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреА рд╣реИред рдЗрд╕ рдкрд░рдд рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рдХреЛ рд╕реБрдзрд╛рд░рддрд╛ рд╣реИред


рдЕрдЧрд▓реА рджреЛ рдкрд░рддреЗрдВ tf.keras.layers.Dense рд╣реИрдВред рдпреЗ рдХрд╕рдХрд░ рдЬреБрдбрд╝реЗ рд╣реБрдП рдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рддрдВрддреНрд░рд┐рдХрд╛ рдкрд░рддреЗрдВ рд╣реИрдВред рдкрд╣рд▓реЗ рдШрдиреЗ рдкрд░рдд рдореЗрдВ 128 рдиреЛрдбреНрд╕ (рдпрд╛ рдиреНрдпреВрд░реЙрдиреНрд╕) рд╣реЛрддреЗ рд╣реИрдВред рджреВрд╕рд░рд╛ (рдФрд░ рдЕрдВрддрд┐рдо) рд╕реНрддрд░ 10 рдиреЛрдбреНрд╕ tf.nn.softmax рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░рдд рд╣реИ, рдЬреЛ рджрд╕ рдкреНрд░рд╛рдпрд┐рдХрддрд╛ рдЕрдиреБрдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдпреЛрдЧ 1 рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдореЗрдВ рдПрдХ рдЕрдиреБрдорд╛рди рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдЫрд╡рд┐ 10 рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред


рдПрдХ рдореЙрдбрд▓ рдХрд╛ рд╕рдВрдХрд▓рди


рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореЙрдбрд▓ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛ, рдЙрд╕реЗ рдХреБрдЫ рдФрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЙрдиреНрд╣реЗрдВ рдореЙрдбрд▓ рдХреЗ рд╕рдВрдХрд▓рди рдЪрд░рдг рдХреЗ рджреМрд░рд╛рди рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ:


  • рд╣рд╛рдирд┐ рд╕рдорд╛рд░реЛрд╣ - рдорд╛рдк рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рдореЙрдбрд▓ рдХрд┐рддрдирд╛ рд╕рд╣реА рд╣реИ
  • рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдпрд╣ рд╣реИ рдХрд┐ рдореЙрдбрд▓ рдЙрд╕ рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд╣ рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рдиреБрдХрд╕рд╛рди рдлрд╝рдВрдХреНрд╢рди рдХрд░рддрд╛ рд╣реИред
  • рдореЗрдЯреНрд░рд┐рдХреНрд╕ (рдореЗрдЯреНрд░рд┐рдХреНрд╕) - рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЪрд░рдгреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

 model.compile(optimizer=tf.train.AdamOptimizer(), loss='sparse_categorical_crossentropy', metrics=['accuracy']) 

рдореЙрдбрд▓ рдкреНрд░рд╢рд┐рдХреНрд╖рдг


рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдореЙрдбрд▓ рд╕реАрдЦрдирд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


  1. рдореЙрдбрд▓ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдбреЗрдЯрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ (рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, arrays train_images рдФрд░ train_labels)
  2. рдПрдХ рдореЙрдбрд▓ рдЫрд╡рд┐рдпреЛрдВ рдФрд░ рдЯреИрдЧ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╕реАрдЦрддрд╛ рд╣реИред
  3. рд╣рдо рдореЙрдбрд▓ рдХреЛ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпрд╛рдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ (рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕рд░рдгреА test_images)ред рд╣рдо рд▓реЗрдмрд▓ рд╕рд░рдгреА рд╕реЗ рд▓реЗрдмрд▓ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдХреА рдЕрдиреБрд░реВрдкрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ (рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, test_labels рд╕рд░рдгреА)

рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, model.fit рд╡рд┐рдзрд┐ рдкрд░ рдХреЙрд▓ рдХрд░реЗрдВ:


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


рдореЙрдбрд▓ рдХреЛ рдореЙрдбрд▓рд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп, рдиреБрдХрд╕рд╛рди (рд╣рд╛рдирд┐) рдФрд░ рд╕рдЯреАрдХрддрд╛ (рдПрд╕реАрд╕реА) рдХреЗ рд╕рдВрдХреЗрддрдХ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдореЙрдбрд▓ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдбреЗрдЯрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд▓рдЧрднрдЧ 0.88 (рдпрд╛ 88%) рдХреА рд╕рдЯреАрдХрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред


рд╕рдЯреАрдХрддрд╛ рдХреА рд░реЗрдЯрд┐рдВрдЧ


рддреБрд▓рдирд╛ рдХрд░реЗрдВ рдХрд┐ рдореЙрдбрд▓ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:


 test_loss, test_acc = model.evaluate(test_images, test_labels) print('Test accuracy:', test_acc) 


рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдбрд╛рдЯрд╛рд╕реЗрдЯ рдореЗрдВ рд╕рдЯреАрдХрддрд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдбрд╛рдЯрд╛рд╕реЗрдЯ рдореЗрдВ рд╕рдЯреАрдХрддрд╛ рд╕реЗ рдереЛрдбрд╝рд╛ рдХрдо рд╣реИред рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕рдЯреАрдХрддрд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╕рдЯреАрдХрддрд╛ рдХреЗ рдмреАрдЪ рдпрд╣ рдЕрдВрддрд░ рд░рд┐рдЯреНрд░реЗрд╕реНрдЯрд┐рдВрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдЬрдм рдПрдХ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдореЙрдбрд▓ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдирдП рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдмрджрддрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рддреЛ рдкреАрдЫреЗ рд╣рдЯрдирд╛ рд╣реИред


рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА


рд╣рдо рдХреБрдЫ рдЫрд╡рд┐рдпреЛрдВ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред


 predictions = model.predict(test_images) 

рдпрд╣рд╛рдВ, рдореЙрдбрд▓ рдиреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рд▓реЗрдмрд▓ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреАред рдЖрдЗрдП рдкрд╣рд▓реЗ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреЛ рджреЗрдЦреЗрдВ:


 predictions[0] 


рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА 10 рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИред рд╡реЗ рдЙрд╕ рдореЙрдбрд▓ рдХреЗ "рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕" рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЫрд╡рд┐ рдХрдкрдбрд╝реЛрдВ рдХреЗ 10 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорджреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рд▓реЗрдмрд▓ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдореВрд▓реНрдп рд╣реИ:


 np.argmax(predictions[0]) #9 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореЙрдбрд▓ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЖрд╢реНрд╡рд╕реНрдд рд╣реИ рдХрд┐ рдпрд╣ рдЫрд╡рд┐ рдПрдВрдХрд▓ рдмреВрдЯ (рдЯрдЦрдиреЗ рдХреЗ рдЬреВрддреЗ), рдпрд╛ class_names [9] рд╣реИред рдФрд░ рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд▓реЗрдмрд▓ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рд╣реА рд╣реИ:


 test_labels[0] #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: 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') 

рдЪрд▓реЛ 0 рдХреА рдЫрд╡рд┐, рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпреЛрдВ рдФрд░ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЛ рджреЗрдЦреЗрдВред


 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) 


рдЖрдЗрдП рдЙрдирдХреЗ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред рд╕рд╣реА рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рд▓реЗрдмрд▓ рдиреАрд▓реЗ рд╣реИрдВ, рдФрд░ рдЧрд▓рдд рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рд▓реЗрдмрд▓ рд▓рд╛рд▓ рд╣реИрдВред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рддрдм рднреА рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рд╡рд╣ рдмрд╣реБрдд рдЖрд╢реНрд╡рд╕реНрдд рд╣реЛред


 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) 


рдЕрдВрдд рдореЗрдВ, рд╣рдо рдПрдХ рдПрдХрд▓ рдЫрд╡рд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред


 #       img = test_images[0] 

Tf.keras рдореЙрдбрд▓ рдкреИрдХреЗрдЬ (рдмреИрдЪ) рдпрд╛ рд╕рдВрдЧреНрд░рд╣ (рд╕рдВрдЧреНрд░рд╣) рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдо рдПрдХ рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдЗрд╕реЗ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:


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

рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди:


 predictions_single = model.predict(img) print(predictions_single) 


 plot_value_array(0, predictions_single, test_labels) _ = plt.xticks(range(10), class_names, rotation=45) 


 np.argmax(predictions_single[0]) 

рдкрд╣рд▓реЗ рдХреА рддрд░рд╣, рдореЙрдбрд▓ рд▓реЗрдмрд▓ 9 рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рддрд╛ рд╣реИред


рдпрджрд┐ рдЖрдкрдХреЗ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдпрд╛ рдирд┐рдЬреА рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВред

Source: https://habr.com/ru/post/hi426797/


All Articles