
Tensorflow.org рд╕реЗ рдЕрд╡рд▓реЛрдХрди рдЧрд╛рдЗрдб рдХрд╛ рдЕрдиреБрд╡рд╛рджред рдпрд╣ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдЖрдкрдХреЛ рдХреЗрд░рд╕ рд╕реЗ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓ рдмрд╛рддреЗрдВ рджреЗрдЧреАред рдкрдврд╝рдиреЗ рдореЗрдВ 10 рдорд┐рдирдЯ рд▓рдЧрддреЗ рд╣реИрдВред
рдЖрдпрд╛рдд tf.keras
tf.keras
Keras API рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рдпрд╣ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдПрдкреАрдЖрдИ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЯреЗрдиреНрд╕рд░рдлреНрд▓реЛ-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреИрд╕реЗ рдХрд┐
рдЙрддреНрд╕реБрдХ рдирд┐рд╖реНрдкрд╛рджрди ,
tf.data
рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдФрд░
рдПрд╕реНрдЯреАрдореЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХрд╛ рд╕рдорд░реНрдерди рд╢рд╛рдорд┐рд▓ рд╣реИред
tf.keras
рд▓рдЪреАрд▓рд╛рдкрди рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рддреНрдпрд╛рдЧ рдХрд┐рдП рдмрд┐рдирд╛ TensorFlow рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ TensorFlow рд╕реЗрдЯрдЕрдк рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ
tf.keras
рдЖрдпрд╛рдд рдХрд░реЗрдВ:
from __future__ import absolute_import, division, print_function, unicode_literals import tensorflow as tf from tensorflow import keras
tf.keras
рдХрд┐рд╕реА рднреА
tf.keras
рд╕рдВрдЧрдд рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рд░рдЦреЗрдВ:
- рдирд╡реАрдирддрдо TensorFlow рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ tf.keras рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг
keras
рдореЗрдВ keras рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред tf.keras.__version__
рджреЗрдЦреЗрдВред - рдЬрдм рдЖрдк рдореЙрдбрд▓ рд╡рдЬрд╝рди
tf.keras
, рддреЛ tf.keras
рдЪреЗрдХрдкреЙрдЗрдВрдЯ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИред save_format='h5'
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП save_format='h5'
рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░реЗрдВ (рдпрд╛ рдлрд╝рд╛рдЗрд▓ .h5
рдореЗрдВ .h5
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝реЗрдВ)ред
рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдореЙрдбрд▓ рдмрдирд╛рдПрдБ
рдЕрдиреБрдХреНрд░рдорд┐рдХ рдореЙрдбрд▓
рдХреЗрд░рд╕ рдореЗрдВ, рдЖрдк
рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП
рдкрд░рддреЗрдВ рдЬрдорд╛
рдХрд░рддреЗ рд╣реИрдВ ред рдПрдХ рдореЙрдбрд▓ рдПрдХ (рдЖрдорддреМрд░ рдкрд░) рдкрд░рдд рдЧреНрд░рд╛рдл рд╣реИред рдореЙрдбрд▓ рдХрд╛ рд╕рдмрд╕реЗ рдЖрдо рдкреНрд░рдХрд╛рд░ рдкрд░рдд рдвреЗрд░ рд╣реИ:
tf.keras.Sequential
рдореЙрдбрд▓ред
рд╣рдо рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬреБрдбрд╝реЗ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ (рдпрд╛рдиреА, рдПрдХ рдмрд╣реБрдкрд░рдд рдЕрд╡рдзрд╛рд░рдгрд╛рддреНрдордХ):
from tensorflow.keras import layers model = tf.keras.Sequential()
рдкрд░рддреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ
tf.keras.layers
рдкрд░рддреЛрдВ рдХреА рдХрдИ рдХрд┐рд╕реНрдореЗрдВ
tf.keras.layers
ред рдЙрдирдореЗрдВ рд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддрд░реНрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
activation
: рдкрд░рдд рдХреЗ рд▓рд┐рдП рд╕рдХреНрд░рд┐рдпрдг рдлрд╝рдВрдХреНрд╢рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рддрдерд╛рдХрдерд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдХреЛрдИ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдирд╣реАрдВ рд╣реИредkernel_initializer
рдФрд░ bias_initializer
: рдЖрд░рдВрднрд┐рдХ рдпреЛрдЬрдирд╛рдПрдБ рдЬреЛ рд▓реЗрдпрд░ рд╡реЗрдЯ (рдХреЛрд░ рдФрд░ рд╢рд┐рдлреНрдЯ) рдмрдирд╛рддреА рд╣реИрдВред рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╛рдо рдпрд╛ рддрдерд╛рдХрдерд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ "Glorot uniform"
редkernel_regularizer
рдФрд░ bias_regularizer
: bias_regularizer
рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдкрд░рдд рднрд╛рд░ (рдХреЛрд░ рдФрд░ рд╢рд┐рдлреНрдЯ) рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдПрд▓ 1 рдпрд╛ рдПрд▓ 2 рдирд┐рдпрдорд┐рддреАрдХрд░рдгред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдирд┐рдпрдорд┐рддреАрдХрд░рдг рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИред
'Tf.keras.layers.Dense' рдкрд░рддреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдФрд░ рдореВрд▓реНрдпрд╛рдВрдХрди
рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗрдЯрдЕрдк
рдореЙрдбрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж,
compile
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рд╕реАрдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ:
model = tf.keras.Sequential([
tf.keras.Model.compile
рддреАрди рдорд╣рддреНрд╡рдкреВрд░реНрдг рддрд░реНрдХ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ:
optimizer
: рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред tf.keras.optimizers
рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ рдкрд╛рд╕ рдХрд░реЗрдВ, рдЬреИрд╕реЗ рдХрд┐ tf.keras.optimizers.Adam
рдпрд╛ tf.keras.optimizers.SGD
ред рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк 'adam'
рдпрд╛ 'sgd'
рдЬреИрд╕реЗ рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредloss
: рдпрд╣ рдПрдХ рдРрд╕рд╛ рдХрд╛рд░реНрдп рд╣реИ рдЬрд┐рд╕реЗ рд╕реАрдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдиреНрдпреВрдирддрдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рднрд┐рдиреНрдирддрд╛рдУрдВ рдореЗрдВ рдорд╛рдирдХ рддреНрд░реБрдЯрд┐ ( mse
), binary_crossentropy
, binary_crossentropy
ред рд╣рд╛рдирд┐ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд╛рдо рдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ tf.keras.losses
рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдкрд╛рд╕ рдХрд░рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредmetrics
: рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╛рдо рд╣реИрдВ рдпрд╛ рдЬрд┐рдиреНрд╣реЗрдВ tf.keras.metrics
рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред- рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЙрддреНрд╕реБрдХрддрд╛ рд╕реЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдЖрдк рдкреИрд░рд╛рдореАрдЯрд░
run_eagerly=True
рдХрдВрдкрд╛рдЗрд▓рд░ рдкрд░ run_eagerly=True
рдЕрдЧрд▓рд╛, рд╣рдо рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВрдЧреЗ:
NumPy Data рд╕реЗ рд╕реАрдЦрдирд╛
рдЫреЛрдЯреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП, рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП NumPy рдХреА рдореЗрдореЛрд░реА рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдореЙрдбрд▓ `рдлрд┐рдЯ` рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдбреЗрдЯрд╛ рдкрд░" рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд "рд╣реИ:
import numpy as np data = np.random.random((1000, 32)) labels = np.random.random((1000, 10)) model.fit(data, labels, epochs=10, batch_size=32)
tf.keras.Model.fit
рдореЗрдВ рддреАрди рдорд╣рддреНрд╡рдкреВрд░реНрдг рддрд░реНрдХ рджрд┐рдП рдЧрдП рд╣реИрдВ:
epochs
: рд╕реАрдЦрдирд╛ * * рдпреБрдЧреЛрдВ рдореЗрдВ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИред рдпреБрдЧ рд╕рднреА рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдкрд░ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╣реИ (рдпрд╣ рдЫреЛрдЯреЗ рдмреИрдЪреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)редbatch_size
: рдиреНрдпреВрдордкреА рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдорд┐рдЯ рдХрд░рддреЗ рд╕рдордп, рдореЙрдбрд▓ рдбреЗрдЯрд╛ рдХреЛ рдЫреЛрдЯреЗ рдмреНрд▓реЙрдХреЛрдВ (рдмреИрдЪ) рдореЗрдВ рддреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рдЗрди рдмреНрд▓реЙрдХреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдпрджрд┐ рдЕрдВрддрд┐рдо рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдмреИрдЪ рдЖрдХрд╛рд░ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдЕрдВрддрд┐рдо рдмреНрд▓реЙрдХ рдЫреЛрдЯрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИредvalidation_data
: рдЬрдм рдХрд┐рд╕реА рдореЙрдбрд▓ рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдк рд╕рддреНрдпрд╛рдкрди рдбреЗрдЯрд╛ рдкрд░ рдЙрд╕рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдФрд░ рд▓реЗрдмрд▓реНрд╕ рдХрд╛ рдЯрдкрд▓ рдкрд╛рд╕ рдХрд░рдирд╛ рдореЙрдбрд▓ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдпреБрдЧ рдХреЗ рдЕрдВрдд рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдореЛрдб рдореЗрдВ рдиреБрдХрд╕рд╛рди рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдпрд╣рд╛рдБ
validation_data
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
import numpy as np data = np.random.random((1000, 32)) labels = np.random.random((1000, 10)) val_data = np.random.random((100, 32)) val_labels = np.random.random((100, 10)) model.fit(data, labels, epochs=10, batch_size=32, validation_data=(val_data, val_labels))
Tf.data рдбреЗрдЯрд╛рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг
рдмрдбрд╝реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛ рдХрдИ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рд╕реЗрдЯ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
fit
рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП 'tf.data.Dataset' рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрдВ:
рдЪреВрдВрдХрд┐
Dataset
рдмреИрдЪреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдХреЛрдб рдХреЗ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдХреЛ
batch_size
рддрд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
dataset = tf.data.Dataset.from_tensor_slices((data, labels)) dataset = dataset.batch(32) val_dataset = tf.data.Dataset.from_tensor_slices((val_data, val_labels)) val_dataset = val_dataset.batch(32) model.fit(dataset, epochs=10, validation_data=val_dataset)
рдЖрдХрд▓рди рдФрд░ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА
tf.keras.Model.evaluate
рдФрд░
tf.keras.Model.predict
NumPy рдФрд░
tf.data.Dataset
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреА рд╣реИрдВред
рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдореЛрдб рдФрд░ рдореАрдЯреНрд░рд┐рдХ рдореЗрдВ рдиреБрдХрд╕рд╛рди рдХрд╛
рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
рдФрд░ рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдиреНрдпреВрдордкреА рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдореЛрдб рдореЗрдВ рдЕрдВрддрд┐рдо рд╕реНрддрд░
рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреА
рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреИрд╕реЗ рдХрд░реЗрдВ:
рдЬрдЯрд┐рд▓ рдореЙрдбрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг
рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдПрдкреАрдЖрдИ
tf.keras.Sequential
рдореЙрдбрд▓ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд░рдд рд╕реНрдЯреИрдХ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдПрдХ рдордирдорд╛рдиреЗ рдореЙрдбрд▓ рдХреА рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдЯрд┐рд▓ рдореЙрдбрд▓ рдЯреЛрдкреЛрд▓реЙрдЬреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд░рд╕ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреИрд╕реЗ:
- рдПрдХрд╛рдзрд┐рдХ рдЗрдирдкреБрдЯ рдореЙрдбрд▓
- рдХрдИ рдЖрдЙрдЯрдкреБрдЯ рд╡рд╛рд▓реЗ рдореЙрдбрд▓,
- рд╕рд╛рдорд╛рдиреНрдп рдкрд░рддреЛрдВ рд╡рд╛рд▓реЗ рдореЙрдбрд▓ (рдПрдХ рд╣реА рдкрд░рдд рдХреЛ рдХрдИ рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ),
- рдЕрд╕рдВрдЧрдд рдбреЗрдЯрд╛ рдзрд╛рд░рд╛рдУрдВ рд╡рд╛рд▓реЗ рдореЙрдбрд▓ (рдЙрджрд╛ред рдЕрд╡рд╢рд┐рд╖реНрдЯ рд╕рдВрдмрдВрдз)ред
рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдПрдХ рдореЙрдбрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
- рдкрд░рдд рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдФрд░ рдПрдХ рдЯреЗрдВрд╕рд░ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
- рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ
tf.keras.Model
рдХрд╛ рдЙрдкрдпреЛрдЧ tf.keras.Model
рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрд╣ рдореЙрдбрд▓ `рдЕрдиреБрдХреНрд░рдорд┐рдХ` рдореЙрдбрд▓ рдХреА рддрд░рд╣ рд╣реА рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рд╣реИред
рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╕рд░рд▓, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬреБрдбрд╝реЗ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
inputs = tf.keras.Input(shape=(32,))
рдЗрди рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рдореЙрдбрд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдВред
model = tf.keras.Model(inputs=inputs, outputs=predictions)
рдЙрдкрд╡рд░реНрдЧ рдореЙрдбрд▓
tf.keras.Model
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓рди рдпреЛрдЧреНрдп рдореЙрдбрд▓ рдмрдирд╛рдПрдВ рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реАрдзреЗ рд╡рд┐рддрд░рдг рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред
__init__
рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд░рддреЗрдВ рдмрдирд╛рдПрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд░реНрдЧ рдЙрджрд╛рд╣рд░рдг рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВред
call
рд╡рд┐рдзрд┐ рдореЗрдВ рдкреНрд░рддреНрдпрдХреНрд╖ рдкреНрд░рд╕рд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд
call
ред
рдПрдХ рдореЙрдбрд▓ рдХреЛ рдЙрдк-рд╡рд░реНрдЧ рдмрдирд╛рдирд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИ рдЬрдм рдЙрддреНрд╕реБрдХ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд┐рддрд░рдг рдХреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдиреЛрдЯ: рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ рдореЙрдбрд▓
рд╣рдореЗрд╢рд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ, рддреЛ рдЖрдк
super
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп
dynamic=True
рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореБрдЦреНрдп рдмрд┐рдВрджреБ: рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдореЙрдбрд▓ рдХреЛ рдЙрдкрд╡рд░реНрдЧ рдореЗрдВ рд▓рдЪреАрд▓рд╛рдкрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рдХрд╕реНрдЯрдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ, рддреЛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдПрдкреАрдЖрдИ рдЪреБрдиреЗрдВред
рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рдПрдХ рдЙрдкрд╡рд░реНрдЧрд┐рдд tf.keras.Model рдореЙрдбрд▓ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд╕реНрдЯрдо рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд┐рддрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЕрдкреВрд░реНрдг рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:
class MyModel(tf.keras.Model): def __init__(self, num_classes=10): super(MyModel, self).__init__(name='my_model') self.num_classes = num_classes
рдирдП рдореЙрдбрд▓ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдВ:
model = MyModel(num_classes=10)
рдХрд╕реНрдЯрдо рдкрд░рддреЗрдВ
tf.keras.layers.Layer
рдПрдХ рдХрд╕реНрдЯрдо рд▓реЗрдпрд░ рдмрдирд╛рдПрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдФрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдВ:
__init__
: рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕ рдкрд░рдд рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдмрд▓реЗрдпрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред- *
build
: рдкрд░рдд рд╡рдЬрди рдмрдирд╛рдПрдБред add_weight
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЗрдЯ рдЬреЛрдбрд╝реЗрдВ call
: рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд┐рддрд░рдг рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред- рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ,
get_config
рд╡рд┐рдзрд┐ рдФрд░ from_config
рд╡рд░реНрдЧ from_config
рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдкрд░рдд рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдиреАрдЪреЗ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░рдд рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдХрд░реНрдиреЗрд▓ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдЗрдирдкреБрдЯ рдХреЛ
matmul
рдЧрдП рдореИрдЯреНрд░рд┐рдХреНрд╕ (
matmul
) рдХреЛ рдЧреБрдгрд╛ рдХрд░рддрд╛ рд╣реИ:
class MyLayer(layers.Layer): def __init__(self, output_dim, **kwargs): self.output_dim = output_dim super(MyLayer, self).__init__(**kwargs) def build(self, input_shape):
рдЕрдкрдиреЗ рдХрд╕реНрдЯрдо рд▓реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдореЙрдбрд▓ рдмрдирд╛рдПрдБ:
model = tf.keras.Sequential([ MyLayer(10), layers.Activation('softmax')])
рдХреЙрд▓рдмреИрдХ
рдХреЛрд▓реНрдмрдХ рдПрдХ рдРрд╕реА рд╡рд╕реНрддреБ рд╣реИ рдЬреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рдЕрдкрдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдЖрдк рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдХрд╕реНрдЯрдо рдХреЙрд▓рдмреИрдХ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд
tf.keras.callbacks
рдЙрдкрдпреЛрдЧ рдХрд░
tf.keras.callbacks
рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
tf.keras.callbacks.ModelCheckpoint
: рдирд┐рдпрдорд┐рдд рдЕрдВрддрд░рд╛рд▓ рдкрд░ рдореЙрдбрд▓ рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ рд╕рд╣реЗрдЬрдирд╛ред
tf.keras.callbacks.LearningRateScheduler
: рдбрд╛рдпрдирд╛рдорд┐рдХ рд░реВрдк рд╕реЗ рд╢рд┐рдХреНрд╖рдг рдЪрд░рдг рдмрджрд▓реЗрдВред
tf.keras.callbacks.EarlyStopping
: рд╕рддреНрдпрд╛рдкрди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрдиреЗ рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд░реЛрдХ рджреЗрдирд╛ред
tf.keras.callbacks.TensorBoard:
рдореЙрдирд┐рдЯрд░ рдореЙрдбрд▓ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
TensorBoard
tf.keras.callbacks.Callback
рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ
fit
рдореЙрдбрд▓ рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВ:
callbacks = [
рд╕рд╣реЗрдЬрдирд╛ рдФрд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛
рдХреЗрд╡рд▓ рд╡рдЬрди рдореВрд▓реНрдпреЛрдВ рдХреА рдмрдЪрдд
tf.keras.Model.save_weights
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЙрдбрд▓ рднрд╛рд░ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рд▓реЛрдб рдХрд░реЗрдВ:
model = tf.keras.Sequential([ layers.Dense(64, activation='relu', input_shape=(32,)), layers.Dense(10, activation='softmax')]) model.compile(optimizer=tf.keras.optimizers.Adam(0.001), loss='categorical_crossentropy', metrics=['accuracy'])
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдореЙрдбрд▓ рд╡реЗрдЯ TensorFlow рдЪреЗрдХрдкреЙрдЗрдВрдЯ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред рд╡рдЬрди рдХреЛ рдХреЗрд░рд╕ рдПрдЪрдбреАрдПрдл 5 рдкреНрд░рд╛рд░реВрдк (рдХреЗрд░рд╕ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдореВрд▓реНрдп) рдореЗрдВ рднреА рдмрдЪрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рдХреЗрд╡рд▓ рдореЙрдбрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рд╣реЗрдЬрдирд╛
рдореЙрдбрд▓ рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдмрдЪрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдпрд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╡рдЬрди рдХреЗ рдореЙрдбрд▓ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореВрд▓ рдореЙрдбрд▓ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛, рд╕рдорд╛рди рдореЙрдбрд▓ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдкреНрд░рд╛рд░рдВрдн рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреЗрд░рд╕рди JSON рдФрд░ YAML рдХреНрд░рдорд╛рдВрдХрди рд╕реНрд╡рд░реВрдкреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ:
import json import pprint pprint.pprint(json.loads(json_string))
JSON рд╕реЗ рдПрдХ рдореЙрдбрд▓ (рдкреБрдирд░реНрдирд┐рд╡реЗрд╢рд┐рдд) рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛:
fresh_model = tf.keras.models.model_from_json(json_string)
рдореЙрдбрд▓ рдХреЛ рдпрд░рдорд▓ рдХреЗ рд╕рд╛рде рд╕реАрд░рд┐рдпрд▓
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП TensorFlow рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ `pyyaml` рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:
yaml_string = model.to_yaml() print(yaml_string)
YAML рд╕реЗ рдПрдХ рдореЙрдбрд▓ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛:
fresh_model = tf.keras.models.model_from_yaml(yaml_string)
рдиреЛрдЯ: рдЙрдкрд╡рд░реНрдЧрд┐рдд рдореЙрдбрд▓ рдХреНрд░рдорд┐рдХ рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ `рдХреЙрд▓` рдкрджреНрдзрддрд┐ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдкрд╛рдпрдерди рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдкреВрд░реЗ рдореЙрдбрд▓ рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрдирд╛
рд╕рдВрдкреВрд░реНрдг рдореЙрдбрд▓ рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рднрд╛рд░, рдореЙрдбрд▓ рдХрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдХрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рдореЙрдбрд▓ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░рдиреЗ рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рдмрд┐рдирд╛ рдареАрдХ рдЙрд╕реА рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрд╛рдж рдореЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
# model = tf.keras.Sequential([ layers.Dense(10, activation='softmax', input_shape=(32,)), layers.Dense(10, activation='softmax') ]) model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy']) model.fit(data, labels, batch_size=32, epochs=5) # HDF5 model.save('my_model.h5') # . model = tf.keras.models.load_model('my_model.h5')
рдЙрддреНрд╕реБрдХ рдирд┐рд╖реНрдкрд╛рджрди
рдПрдЧрд░ рдирд┐рд╖реНрдкрд╛рджрди рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИ рдЬреЛ рддреБрд░рдВрдд рд╕рдВрдЪрд╛рд▓рди рдХрд░рддрд╛ рд╣реИред рдпрд╣
tf.keras
рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди
tf.keras
рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред
`Tf.keras` рдПрдкреАрдЖрдИ рдХреЗ рд╕рднреА рдЗрдорд╛рд░рдд рдореЙрдбрд▓ рдЙрддреНрд╕реБрдХ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИрдВред рдпрджреНрдпрдкрд┐ `рдЕрдиреБрдХреНрд░рдорд┐рдХ` рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ,
рдПрдХ рдореЙрдбрд▓ рдХреЛ рдмрдирд╛рдиреЗ рдФрд░
рдХрд╕реНрдЯрдо рдкрд░рддреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдЙрддреНрд╕реБрдХ рдирд┐рд╖реНрдкрд╛рджрди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ - рдЗрди рдПрдкреАрдЖрдИ рдХреЛ рдЖрдкрдХреЛ рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд┐рддрд░рдг рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдПрдкреАрдЖрдИ рдХреЗ рдмрдЬрд╛рдп рдЬреЛ рдореМрдЬреВрджрд╛ рдкрд░рддреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдХреЗ рдореЙрдбрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ)ред
рд╡рд┐рддрд░рдг
рдорд▓реНрдЯреАрдкрд▓ рдЬреАрдкреАрдпреВ
tf.keras
рдореЙрдбрд▓ рдХреЛ рдХрдИ GPU рдкрд░
tf.distribute.Strategy
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдкреАрдЖрдИ рдореМрдЬреВрджрд╛ рдХреЛрдб рдореЗрдВ рдмрд╣реБрдд рдХрдо рдпрд╛ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХреЗ рд╕рд╛рде рдХрдИ GPU рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рд╕реАрдЦрдиреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рд╡рд░реНрддрдорд╛рди рдореЗрдВ,
tf.distribute.MirroredStrategy
рдПрдХрдорд╛рддреНрд░ рд╕рдорд░реНрдерд┐рдд рд╡рд┐рддрд░рдг рд░рдгрдиреАрддрд┐ рд╣реИред
MirroredStrategy
рд░реЗрдЦрд╛рдВрдХрди рдХреЗ рд╕рд╛рде рд░реЗрдЦрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИ
рдПрдХ рдорд╢реАрди рдкрд░ рд╕рднреА рдХреЛ рдХрдо рдХрд░рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕реАрдЦрдиреЗред `
.scope()
рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,`
Strategy
``
.scope()
`рдореЗрдВ рдореЙрдбрд▓ рдХреЗ рдЕрдиреБрдХреВрд▓рдХ рдЕрдзрд┐рд╖реНрдард╛рдкрди, рдбрд┐рдЬрд╝рд╛рдЗрди рдФрд░ рд╕рдВрдХрд▓рди рдХреЛ рдШреЛрдВрд╕рд▓реЗ рдореЗрдВ
.scope()
, рдлрд┐рд░ рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░реЗрдВред
рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╣реА рдорд╢реАрди рдкрд░ рдХрдИ GPU рдХреЗ рдмреАрдЪ
tf.keras.Model
рд╡рд┐рддрд░рд┐рдд
tf.keras.Model
ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдПрдХ рд╡рд┐рддрд░рд┐рдд рд░рдгрдиреАрддрд┐ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреЗ рднреАрддрд░ рдПрдХ рдореЙрдбрд▓ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
strategy = tf.distribute.MirroredStrategy() with strategy.scope(): model = tf.keras.Sequential() model.add(layers.Dense(16, activation='relu', input_shape=(10,))) model.add(layers.Dense(1, activation='sigmoid')) optimizer = tf.keras.optimizers.SGD(0.2) model.compile(loss='binary_crossentropy', optimizer=optimizer) model.summary()
рдлрд┐рд░ рд╣рдо рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдбреЗрдЯрд╛ рдкрд░ рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
x = np.random.random((1024, 10)) y = np.random.randint(2, size=(1024, 1)) x = tf.cast(x, tf.float32) dataset = tf.data.Dataset.from_tensor_slices((x, y)) dataset = dataset.shuffle(buffer_size=1024).batch(32) model.fit(dataset, epochs=1)
рд╕рддреНрдпрд╛рдкрди рдХреЗ рдмрд╛рдж, рдЕрдиреБрд╡рд╛рдж Tensorflow.org рдкрд░ рднреА рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдпрджрд┐ рдЖрдк рд░реВрд╕реА рдореЗрдВ Tensorflow.org рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╡рд╛рдж рдореЗрдВ рднрд╛рдЧ рд▓реЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдпрд╛ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВред рдХрд┐рд╕реА рднреА рд╕реБрдзрд╛рд░ рдпрд╛ рдЯрд┐рдкреНрдкрдгреА рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред