قمت ببناء نموذج في تنسرفلو وأريد طريقة يتم فيها حفظ الأوزان المقابلة لأفضل نتيجة حصلت عليها خلال التدريب، كيف يمكننا القيام بذلك في تنسرفلو؟ على سبيل المثال هنا حصلت على أفضل دقة للنموذج في ال epoch رقم 84. وأنا أريد أن يتم حفظ النموذج عند تلك النقطة.
from sklearn.datasets import make_moons
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.callbacks import EarlyStopping
from tensorflow.keras.callbacks import ModelCheckpoint
from matplotlib import pyplot
from tensorflow.keras.models import load_model
# generate 2d classification dataset
X, y = make_moons(n_samples=100, noise=0.2, random_state=1)
# split into train and test
n_train = 30
trainX, testX = X[:n_train, :], X[n_train:, :]
trainy, testy = y[:n_train], y[n_train:]
# define model
model = Sequential()
model.add(Dense(500, input_dim=2, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# fit model
history = model.fit(trainX, trainy, validation_data=(testX, testy), epochs=100)
# load the saved model
saved_model = load_model('best_model.h5')
# evaluate the model
_, train_acc = saved_model.evaluate(trainX, trainy, verbose=0)
_, test_acc = saved_model.evaluate(testX, testy, verbose=0)
print('Train: %.3f, Test: %.3f' % (train_acc, test_acc))
"""
Epoch 1/100
1/1 [==============================] - 1s 849ms/step - loss: 0.7086 - accuracy: 0.1667 - val_loss: 0.6950 - val_accuracy: 0.4571
Epoch 2/100
1/1 [==============================] - 0s 51ms/step - loss: 0.6922 - accuracy: 0.6333 - val_loss: 0.6842 - val_accuracy: 0.6857
Epoch 3/100
1/1 [==============================] - 0s 56ms/step - loss: 0.6763 - accuracy: 0.8333 - val_loss: 0.6738 - val_accuracy: 0.7143
...
.
.
Epoch 84/100
1/1 [==============================] - 0s 28ms/step - loss: 0.2014 - accuracy: 0.9000 - val_loss: 0.4368 - val_accuracy: 0.7829
"""
السؤال
عامر ابراهيم
قمت ببناء نموذج في تنسرفلو وأريد طريقة يتم فيها حفظ الأوزان المقابلة لأفضل نتيجة حصلت عليها خلال التدريب، كيف يمكننا القيام بذلك في تنسرفلو؟ على سبيل المثال هنا حصلت على أفضل دقة للنموذج في ال epoch رقم 84. وأنا أريد أن يتم حفظ النموذج عند تلك النقطة.
from sklearn.datasets import make_moons from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras.callbacks import EarlyStopping from tensorflow.keras.callbacks import ModelCheckpoint from matplotlib import pyplot from tensorflow.keras.models import load_model # generate 2d classification dataset X, y = make_moons(n_samples=100, noise=0.2, random_state=1) # split into train and test n_train = 30 trainX, testX = X[:n_train, :], X[n_train:, :] trainy, testy = y[:n_train], y[n_train:] # define model model = Sequential() model.add(Dense(500, input_dim=2, activation='relu')) model.add(Dense(1, activation='sigmoid')) model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # fit model history = model.fit(trainX, trainy, validation_data=(testX, testy), epochs=100) # load the saved model saved_model = load_model('best_model.h5') # evaluate the model _, train_acc = saved_model.evaluate(trainX, trainy, verbose=0) _, test_acc = saved_model.evaluate(testX, testy, verbose=0) print('Train: %.3f, Test: %.3f' % (train_acc, test_acc)) """ Epoch 1/100 1/1 [==============================] - 1s 849ms/step - loss: 0.7086 - accuracy: 0.1667 - val_loss: 0.6950 - val_accuracy: 0.4571 Epoch 2/100 1/1 [==============================] - 0s 51ms/step - loss: 0.6922 - accuracy: 0.6333 - val_loss: 0.6842 - val_accuracy: 0.6857 Epoch 3/100 1/1 [==============================] - 0s 56ms/step - loss: 0.6763 - accuracy: 0.8333 - val_loss: 0.6738 - val_accuracy: 0.7143 ... . . Epoch 84/100 1/1 [==============================] - 0s 28ms/step - loss: 0.2014 - accuracy: 0.9000 - val_loss: 0.4368 - val_accuracy: 0.7829 """
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.