Я новый программист ML и работаю над кодом для отображения точности для всех классов. Код показывает только наиболее вероятный класс.
А также я положил в печать переменную результатов, чтобы посмотреть, что там было, это нормально, что все равно 0, кроме одного класса? должен быть какой-то вес и вероятность для всех классов?
весь проект посвящен трансферному обучению, я использую VGG16 в keras и cifar10, model_weights.h5 имеет функции, извлеченные из cifar10, а файл model_structure представляет собой файл JSON со структурой модели, vgg16 с плотной измененные слои
from keras.models import model_from_json
from pathlib import Path
from keras.preprocessing import image
import numpy as np
# These are the CIFAR10 class labels from the training data (in order from 0 to 9)
class_labels = [
"Plane",
"Car",
"Bird",
"Cat",
"Deer",
"Dog",
"Frog",
"Horse",
"Boat",
"Truck"
]
# Load the json file that contains the model's structure
f = Path("model_structure.json")
model_structure = f.read_text()
# Recreate the Keras model object from the json data
model = model_from_json(model_structure)
# Re-load the model's trained weights
model.load_weights("model_weights.h5")
# Load an image file to test, resizing it to 32x32 pixels (as required by this model)
img = image.load_img("catdog11.jpg", target_size=(32, 32))
# Convert the image to a numpy array
image_to_test = image.img_to_array(img)
# Add a fourth dimension to the image (since Keras expects a list of images, not a single image)
list_of_images = np.expand_dims(image_to_test, axis=0)
# Make a prediction using the model
results = model.predict(list_of_images)
print("what is in results?: ", results)
# Since we are only testing one image, we only need to check the first result
single_result = results[0]
# We will get a likelihood score for all 10 possible classes. Find out which class had the highest score.
most_likely_class_index = int(np.argmax(single_result))
class_likelihood = single_result[most_likely_class_index]
# Get the name of the most likely class
class_label = class_labels[most_likely_class_index]
# Print the result
print("This is image is a {} - Likelihood: {:2f}".format(class_label, class_likelihood))
это то, что отображается в данный момент
Using TensorFlow backend.
2019-04-15 17:56:05.082617: I T:\src\github\tensorflow\tensorflow\core\platform\cpu_feature_guard.cc:140]
Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
что в результатах ?: [[0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]]
Это изображение собаки - вероятность: 1.000000
Процесс завершен с кодом выхода 0
РЕЗУЛЬТАТ, КОТОРЫЙ Я ХОЧУ ДОСТИГНУТЬ:
CIFAR 10 имеет 10 классов, поэтому при вводе изображения оно должно отображаться, например:
лягушка: 0,4%
грузовик: 0,002%
и т. Д.