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

рдпрд╣ рд╕реНрдиреАрдХрд░реНрд╕ рдФрд░ рд╢рд░реНрдЯ рдЬреИрд╕реЗ рдХрдкрдбрд╝реЛрдВ рдХреА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдореЙрдбрд▓ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рд╣реИред рдПрдХ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдЬрдЧрд░ рдФрд░ рдЯреЗрдиреНрд╕рд░рдлреНрд▓реЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
TensorFlow рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- numpy (рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ: рдкрд╛рдЗрдк рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ numpy)
- matplotlib (рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ: matplotlib рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ)
- рдХреЗрд░рд╕ (рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ: рдкрд╛рдЗрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрд╕)
- jupyter (рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ: рдкрд╛рдЗрдк рдЬреНрдпреВрдкрд┐рдЯрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ)
рдкрд┐рдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛: рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░, рдкрд┐рдк рдЗрдВрд╕реНтАНрдЯреЙрд▓ рдЯреЗрдВрд╕реЛрд░рдлреНрд▓реЛ рд▓рд┐рдЦреЗрдВ
рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ, рддреЛ рдЖрдк .whl рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдкрд╛рдЗрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ file_path \ file_name.white.l
TensorFlow рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕реНрдерд╛рдкрдирд╛ рдЧрд╛рдЗрдб
рдЬреБрдкрд┐рдЯрд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреНрдпреВрдкрд┐рдЯрд░ рдиреЛрдЯрдмреБрдХ рд▓рд┐рдЦреЗрдВред
рд╢реБрд░реБрдЖрдд рд╣реЛ рд░рд╣реА рд╣реИ
рдпрд╣ рдЧрд╛рдЗрдб рдлреИрд╢рди рдПрдордПрдирдЖрдИрдПрд╕рдЯреА рдбреЗрдЯрд╛рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ 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 рд╕рд░рдгрд┐рдпреЛрдВ рджреЗрддрд╛ рд╣реИ:
- Arrays train_images рдФрд░ train_labels рдбреЗрдЯрд╛ рд╣реИ рдЬреЛ рдореЙрдбрд▓ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ
- рдореЙрдбрд▓ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рдгрд┐рдпреЛрдВ 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
рдбреЗрдЯрд╛ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ
рдореЙрдбрд▓ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдбреЗрдЯрд╛ рдХреЛ рдкреВрд░реНрд╡-рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗрдЯ рдореЗрдВ рдкрд╣рд▓реА рдЫрд╡рд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдкрд┐рдХреНрд╕реЗрд▓ рдорд╛рди 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'])
рдореЙрдбрд▓ рдкреНрд░рд╢рд┐рдХреНрд╖рдг
рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдореЙрдбрд▓ рд╕реАрдЦрдирд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рдореЙрдбрд▓ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдбреЗрдЯрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ (рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, arrays train_images рдФрд░ train_labels)
- рдПрдХ рдореЙрдбрд▓ рдЫрд╡рд┐рдпреЛрдВ рдФрд░ рдЯреИрдЧ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╕реАрдЦрддрд╛ рд╣реИред
- рд╣рдо рдореЙрдбрд▓ рдХреЛ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпрд╛рдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ (рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕рд░рдгреА 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])
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореЙрдбрд▓ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЖрд╢реНрд╡рд╕реНрдд рд╣реИ рдХрд┐ рдпрд╣ рдЫрд╡рд┐ рдПрдВрдХрд▓ рдмреВрдЯ (рдЯрдЦрдиреЗ рдХреЗ рдЬреВрддреЗ), рдпрд╛ class_names [9] рд╣реИред рдФрд░ рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд▓реЗрдмрд▓ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рд╣реА рд╣реИ:
test_labels[0]
рд╣рдо рдЗрди рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рд▓рд┐рдЦреЗрдВрдЧреЗред
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)

рдЕрдВрдд рдореЗрдВ, рд╣рдо рдПрдХ рдПрдХрд▓ рдЫрд╡рд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
Tf.keras рдореЙрдбрд▓ рдкреИрдХреЗрдЬ (рдмреИрдЪ) рдпрд╛ рд╕рдВрдЧреНрд░рд╣ (рд╕рдВрдЧреНрд░рд╣) рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдо рдПрдХ рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдЗрд╕реЗ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:
рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди:
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 рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдХреЗ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдпрд╛ рдирд┐рдЬреА рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВред