在测试数据集上测试 h5 模型
Test h5 model on Test Dataset
使用迁移学习进行二进制 class化。我使用我的数据集训练模型,该数据集已分为三个文件夹 - train、test、val。其中每一个还包含每个 class.
的单独文件夹
r = model.fit_generator(
training_set,
validation_data = val_set,
epochs=5,
steps_per_epoch=len(training_set),
validation_steps=len(test_set)
)
训练后我将模型保存为 h5 文件。
import tensorflow as tf
from keras.models import load_model
model.save('vgg16_new_model.h5')
如何使用它在测试集上测试模型?
有一个等效于 fit_generator
的名为 evaluate_generator
,当您想要将测试数据集传递给经过训练的模型时可以使用它。但是,这两个选项在最新的 Tensorflow
版本中都已弃用,因此只需使用 model.fit
和 model.evaluate
。这是一个简单的例子:
import tensorflow as tf
flowers = tf.keras.utils.get_file(
'flower_photos',
'https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz',
untar=True)
img_gen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255, rotation_range=20)
model = tf.keras.applications.vgg16.VGG16(include_top=False, input_shape=(256, 256, 3))
x = tf.keras.layers.Flatten()(model.layers[-1].output)
x = tf.keras.layers.Dense(1024, activation='relu')(x)
output = tf.keras.layers.Dense(5)(x)
model = tf.keras.Model(inputs=model.inputs, outputs=output)
model.summary()
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
epochs=1
model.fit(img_gen.flow_from_directory(flowers, batch_size=32, class_mode='sparse'), epochs=epochs)
model.save('vgg16_new_model.h5')
##############################################################
new_model = tf.keras.models.load_model('vgg16_new_model.h5')
results = new_model.evaluate(img_gen.flow_from_directory(flowers, batch_size=32, class_mode='sparse'))
tf.print('Accuracy: ', results[1]*100)
Found 3670 images belonging to 5 classes.
115/115 [==============================] - 73s 629ms/step - loss: 1.6048 - accuracy: 0.2447
Accuracy: 24.468664824962616
请注意,我使用相同的子集进行训练和评估,但您会将测试集传递给 model.evaluate
。
使用迁移学习进行二进制 class化。我使用我的数据集训练模型,该数据集已分为三个文件夹 - train、test、val。其中每一个还包含每个 class.
的单独文件夹r = model.fit_generator(
training_set,
validation_data = val_set,
epochs=5,
steps_per_epoch=len(training_set),
validation_steps=len(test_set)
)
训练后我将模型保存为 h5 文件。
import tensorflow as tf
from keras.models import load_model
model.save('vgg16_new_model.h5')
如何使用它在测试集上测试模型?
有一个等效于 fit_generator
的名为 evaluate_generator
,当您想要将测试数据集传递给经过训练的模型时可以使用它。但是,这两个选项在最新的 Tensorflow
版本中都已弃用,因此只需使用 model.fit
和 model.evaluate
。这是一个简单的例子:
import tensorflow as tf
flowers = tf.keras.utils.get_file(
'flower_photos',
'https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz',
untar=True)
img_gen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255, rotation_range=20)
model = tf.keras.applications.vgg16.VGG16(include_top=False, input_shape=(256, 256, 3))
x = tf.keras.layers.Flatten()(model.layers[-1].output)
x = tf.keras.layers.Dense(1024, activation='relu')(x)
output = tf.keras.layers.Dense(5)(x)
model = tf.keras.Model(inputs=model.inputs, outputs=output)
model.summary()
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
epochs=1
model.fit(img_gen.flow_from_directory(flowers, batch_size=32, class_mode='sparse'), epochs=epochs)
model.save('vgg16_new_model.h5')
##############################################################
new_model = tf.keras.models.load_model('vgg16_new_model.h5')
results = new_model.evaluate(img_gen.flow_from_directory(flowers, batch_size=32, class_mode='sparse'))
tf.print('Accuracy: ', results[1]*100)
Found 3670 images belonging to 5 classes.
115/115 [==============================] - 73s 629ms/step - loss: 1.6048 - accuracy: 0.2447
Accuracy: 24.468664824962616
请注意,我使用相同的子集进行训练和评估,但您会将测试集传递给 model.evaluate
。