с помощью модели трансферного обучения, она очень легко сходилась в тензорном потоке, но брала одно изображение для предсказания, что результат неверен
Когда я даю обученное изображение для предсказания, оно также показывает неправильный результат
пакетный размер = 32 входной формы (32,256,256,3) выходной класс = 19
base_model = tf.keras.applications.Xception(input_shape=(256, 256, 3),
include_top=False,
weights='imagenet')
feature_batch = base_model(image_batch)
global_average_layer = tf.keras.layers.GlobalAveragePooling2D()
feature_batch_average = global_average_layer(feature_batch)
prediction_layer = tf.keras.layers.Dense(19,activation=tf.nn.softmax)
prediction_batch = prediction_layer(feature_batch_average)
model = tf.keras.Sequential([
base_model,
tf.keras.layers.Dropout(0.5),
global_average_layer,
tf.keras.layers.Dropout(0.5),
prediction_layer
])
base_learning_rate = 0.0001
model.compile(optimizer=tf.keras.optimizers.Adam(),
loss=tf.keras.losses.CategoricalCrossentropy(),
metrics=['accuracy'])
logdir="logs1/" + datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=logdir)
model.fit_generator(train_ds,steps_per_epoch=100,epochs=20,validation_data=test_ds,validation_steps=100,callbacks=[tensorboard_callback])
import cv2
import matplotlib.pyplot as plt
img = cv2.imread('/content/drive/My Drive/Data/testimg.jpg')
plt.figure(figsize=(20,20))
ax = plt.subplot(5,5,1)
img = cv2.resize(img, (256,256))
img=img.reshape(0,256,256,3)
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
predictions=model.predict(img)
predictions = model.evaluate(test_ds,steps=50)
вывод оценки: 50/50 [========================= ==========] - 18 с 350 мс / шаг - потери: 9,8796e-06 - точность: 1,0000
Кривая точности
кривая потерь