πΠΠ°ΠΊ ΡΡΠΊΠΎΡΠΈΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΠΈ Π½Π° python: ΡΠΎΠΏ ΡΠΎΠ²Π΅ΡΠΎΠ² ΠΈ ΡΡΡΠΊΠΎΠ²π₯
ΠΠ°ΠΊ ΡΡΠΊΠΎΡΠΈΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΠΈ Π½Π° Python?
Π£ΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²:
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ GPU: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° (GPU) ΠΌΠΎΠΆΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΊΠΎΡΠΈΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ TensorFlow ΠΈΠ»ΠΈ PyTorch, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π½Π° GPU.
- ΠΠ°ΡΡΠ΅Π²ΠΎΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅: ΠΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΠΈ Π½Π° Π±ΠΎΠ»ΡΡΠΈΡ Π±Π°ΡΡΠ°Ρ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΊΠΎΡΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΠΊΠ°Π·Π°Π² Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° "batch_size" ΠΏΡΠΈ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ.
- ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°: ΠΡΠ±ΠΎΡ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Adam, ΠΌΠΎΠΆΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΊΠΎΡΠΈΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΠΈ. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ learning rate ΠΈ momentum, ΡΡΠΎΠ±Ρ Π΄ΠΎΡΡΠΈΡΡ Π»ΡΡΡΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ².
import tensorflow as tf
# ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ GPU
with tf.device('/GPU:0'):
# ΠΠ°Ρ ΠΊΠΎΠ΄ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΠΈ
pass
# ΠΠ°ΡΡΠ΅Π²ΠΎΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅
batch_size = 64
# ΠΠ°Ρ ΠΊΠΎΠ΄ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ batch_size
# ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°
optimizer = tf.keras.optimizers.Adam(learning_rate=0.001, momentum=0.9)
# ΠΠ°Ρ ΠΊΠΎΠ΄ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Ρ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΡΠΊΠΎΡΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΠΈ Π½Π° Python.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΡΡΠΊΠΎΡΠΈΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΠΈ Π½Π° Python
ΠΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΉΡΠΎΠ½Π½ΡΡ ΡΠ΅ΡΠ΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°ΠΆΠ½ΡΠΌ ΠΈ Π½Π΅ΠΎΡΡΠ΅ΠΌΠ»Π΅ΠΌΡΠΌ ΡΡΠ°ΠΏΠΎΠΌ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π΄Π°Π½Π½Π°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ΅ΡΡΡΡΠΎΠ΅ΠΌΠΊΠΎΠΉ ΠΈ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π½Π°ΠΌ ΡΡΠΊΠΎΡΠΈΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ Python.
1. ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΠΈ, Π²Π°ΠΆΠ½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅. ΠΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π»ΠΈΡΠ½ΠΈΡ Π·Π°Π΄Π΅ΡΠΆΠ΅ΠΊ ΠΈ ΡΡΠΊΠΎΡΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ. ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ²Π΅ΡΠΎΠ² ΠΏΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ:
- ΠΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΈΠ½Π³ Π΄Π°Π½Π½ΡΡ : ΠΡΠΎΠ²Π΅Π΄ΠΈΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΡΠ΅Π΄ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π΄Π°Π½Π½ΡΡ , ΡΠ°ΠΊΡΡ ΠΊΠ°ΠΊ Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠ΅ΡΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΠΈ ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ. ΠΡΠΈΠΌΠ΅Ρ:
import numpy as np
# ΠΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ
data = np.random.rand(100, 3)
normalized_data = (data - np.mean(data, axis=0)) / np.std(data, axis=0)
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠ² Π΄Π°Π½Π½ΡΡ : ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ , Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ Π΄Π°Π½Π½ΡΡ , ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄Π°Π²Π°ΡΡ ΠΏΠΎΡΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΠΈ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π΅Π΅ Π·Π°ΠΏΡΠΎΡΠ°. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ ΠΏΠ°ΠΌΡΡΡ ΠΈ ΡΡΠΊΠΎΡΠΈΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅. ΠΡΠΈΠΌΠ΅Ρ:
from keras.preprocessing.image import ImageDataGenerator
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° Π΄Π°Π½Π½ΡΡ
datagen = ImageDataGenerator(rescale=1./255)
# ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΈ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
train_generator = datagen.flow_from_directory(
'train',
target_size=(150, 150),
batch_size=32,
class_mode='binary'
)
model.fit_generator(
train_generator,
steps_per_epoch=2000,
epochs=50
)
2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ
ΠΠ»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠΉ Π°ΠΊΡΠ΅Π»Π΅ΡΠ°ΡΠΈΠ΅ΠΉ, ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ GPU (Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°). GPU ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ΠΉ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΌΠΎΡΠ½ΠΎΡΡΡΡ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ CPU ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΌΠ°ΡΡΠΈΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ GPU ΠΏΡΠΈ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠΈ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ TensorFlow:
import tensorflow as tf
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΠΈ
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
])
# ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# ΠΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ GPU
with tf.device('/device:GPU:0'):
model.fit(x_train, y_train, epochs=10)
3. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΎΠ±ΡΡΠ΅Π½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ
ΠΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΠΈ Ρ Π½ΡΠ»Ρ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠ΅Π΄ΠΎΠ±ΡΡΠ΅Π½Π½ΡΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΆΠ΅ ΠΈΠΌΠ΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π±Π°Π·ΠΎΠ²ΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΠΎΠ±ΡΡΠ΅Π½Ρ Π½Π° Π±ΠΎΠ»ΡΡΠΈΡ Π½Π°Π±ΠΎΡΠ°Ρ Π΄Π°Π½Π½ΡΡ . ΠΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ»ΡΡΡΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅Π΄ΠΎΠ±ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ResNet50 Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ:
from keras.applications.resnet50 import ResNet50, preprocess_input, decode_predictions
from keras.preprocessing import image
# ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΏΡΠ΅Π΄ΠΎΠ±ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ResNet50
model = ResNet50(weights='imagenet')
# ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
img_path = 'image.jpg'
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
# ΠΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
preds = model.predict(x)
decoded_preds = decode_predictions(preds, top=3)[0]
4. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠΎΠ²
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΡ ΡΠ²Π»ΡΡΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ ΠΏΡΠΈ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠΈ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΠΈ. ΠΠ½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π½Π°ΡΡΡΠΎΠΈΡΡ Π²Π΅ΡΠ° ΠΈ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π½Π°ΡΠ΅ΠΉ ΡΠ΅ΡΠΈ, ΡΡΠΎΠ±Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΈ ΡΡΠΊΠΎΡΠΈΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅. Π Π°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΠΎΠ². ΠΡΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠΎΠ² Π² Python-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ TensorFlow:
- ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΡΠΎΡ Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΡΠΊΠ° (SGD): ΠΡΠΎΡΡΠΎΠΉ ΠΈ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ Π²Π΅ΡΠ° ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·ΡΠ°. ΠΡΠΈΠΌΠ΅Ρ:
optimizer = tf.keras.optimizers.SGD(learning_rate=0.01, momentum=0.9)
model.compile(optimizer=optimizer, loss='sparse_categorical_crossentropy', metrics=['accuracy'])
- ΠΠ΄Π°ΠΏΡΠΈΠ²Π½ΠΎΠ΅ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠ΅ Π·Π°ΡΡΡ Π°Π½ΠΈΠ΅ (Adam): ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ ΡΠΊΠΎΡΠΎΡΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π΅Π³ΠΎ ΠΈΡΡΠΎΡΠΈΠΈ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ°. ΠΡΠΈΠΌΠ΅Ρ:
optimizer = tf.keras.optimizers.Adam(learning_rate=0.001)
model.compile(optimizer=optimizer, loss='sparse_categorical_crossentropy', metrics=['accuracy'])
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΡΡΠΊΠΎΡΠΈΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΉΡΠΎΠ½Π½ΡΡ ΡΠ΅ΡΠ΅ΠΉ Π½Π° ΡΠ·ΡΠΊΠ΅ Python. ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ, ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΎΠ±ΡΡΠ΅Π½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠΎΠ² ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ°Ρ Π²Π°ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΈ Π±ΡΡΡΡΠΎΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΠΈ. ΠΠ΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π²Π°ΡΠΈΠΌΠΈ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡΠΌΠΈ ΠΈ Π΄Π°Π½Π½ΡΡ , ΡΡΠΎΠ±Ρ Π΄ΠΎΡΡΠΈΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΈ ΡΠΎΡΠ½ΠΎΡΡΠΈ.