【问题标题】:How do i pick the best val_acc model?我如何选择最好的 val_acc 模型?
【发布时间】:2020-11-29 23:21:19
【问题描述】:

我正在训练模型,现在我必须选择验证准确度最高的模型。我已经在 1000 个 epoch 上训练了模型。最大准确度可能是 700 或 760 等。我如何选择具有特定权重的模型并使用该模型进行预测。我应该在每个 epoch 之后保存模型还是应该保存权重等。

import time
import numpy as np
from tensorflow.keras.callbacks import TensorBoard
data = np.load('model_features1.npy', allow_pickle=True)
NAME="ITA MLP-{}".format(int(time.time()))
tensorboard=TensorBoard(log_dir="E:\\ITA MLP\\logs\\{}".format(NAME))
from sklearn.model_selection import train_test_split
training_data = np.asarray([i[0] for i in data])
train_labels = data[:, -1]
print("Shape of training data", training_data.shape)
print("Labels of training data", train_labels.shape)
train_data = training_data.astype('float32')
train_data = train_data / 255
from tensorflow.keras import utils as np_utils
one_hot_train_labels = np_utils.to_categorical(train_labels)
train_data1, test_data1, train_labels1, test_labels1 = train_test_split(train_data, one_hot_train_labels,random_state=0,test_size=0.2)
import tensorflow as tf
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(128, input_shape=(128,), activation='relu'))
model.add(tf.keras.layers.Dense(5, activation='softmax'))
# opt = RMSprop(lr=0.001, decay=1e-6)
model.compile(optimizer="rmsprop", loss='categorical_crossentropy', metrics=['accuracy'])
history = model.fit(train_data1,train_labels1, epochs=1000, batch_size=32, verbose=1,validation_data=(test_data1,test_labels1),callbacks=[tensorboard])
[train_loss, train_accuracy] = model.evaluate(train_data1, train_labels1)
print("Evaluation result on Train Data : Loss = {}, accuracy = {}".format(train_loss,train_accuracy))
[test_loss, test_acc] = model.evaluate(test_data1, test_labels1)
print("Evaluation result on Test Data : Loss = {}, accuracy = {}".format(test_loss, test_acc))
model.save('modelupdation.h5')

【问题讨论】:

    标签: python machine-learning deep-learning classification sift


    【解决方案1】:

    你可以使用modelcheckpoint,这里是例子。

    checkpoint_loss = ModelCheckpoint("weights_loss.hdf5", monitor="val_loss", 
    save_best_only=True)
    
    checkpoint_acc = ModelCheckpoint("weights_acc.hdf5", monitor="val_accuracy", 
    save_best_only=True)
    

    【讨论】:

      猜你喜欢
      • 2010-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-28
      • 2019-11-30
      • 2019-09-13
      • 1970-01-01
      • 2020-07-02
      相关资源
      最近更新 更多