#python-3.x #tensorflow
#python-3.x #тензорный поток
Вопрос:
Используя tflearn, я пытаюсь классифицировать изображения.
Мой код
import tflearn
dataset_file = 'my_dataset.txt'
X, Y = tflearn.data_utils.image_preloader(dataset_file, image_shape=(128, 128),categorical_labels=True, mode='file', grayscale=True, normalize=True)
net = tflearn.input_data(shape=(128,128))
net = tflearn.fully_connected(net, 2, activation='linear')
net = tflearn.regression(net, optimizer='adam', loss='categorical_crossentropy')
model = tflearn.DNN(net, tensorboard_verbose=3)
model.fit(X, Y)
print(model.predict(X))
Файл набора данных выглядит следующим образом:
1.jpg 1
2.jpg 1
3.jpg 1
4.jpg 1
5.jpg 0
6.jpg 0
7.jpg 0
…где 1 и 0 — классы изображений.
Однако мои прогнозы не соответствуют моим ожиданиям:
[[2.9711711406707764, -3.049826145172119], [9.435855865478516, -11.466367721557617], [-3.7774205207824707, -4.090094089508057], [-7.006657600402832, -3.4418578147888184], [-18.654706954956055, -0.9354709982872009], [-17.237045288085938, -3.1278553009033203], [-18.066274642944336, -1.6454157829284668]]
Я ожидаю увидеть совпадение для типа изображения 1 или 0.
Просто новичок в tflearn, не уверен, что делать.
Комментарии:
1. В
tflearn.regression
вы пробовали настройкуto_one_hot=True, n_classes=2
?2. это дает мне ошибку ValueError: невозможно передать значение формы (7, 2) для тензора ‘TargetsData / Y: 0’, который имеет форму ‘(?,)’
Ответ №1:
Попробуйте изменить свой fully_connected
слой, чтобы использовать 'softmax'
активацию
net = tflearn.fully_connected(net, 2, activation='softmax')
Теперь вы должны получать выходные данные формы:
predictions = [[0.999962568283081, 3.739727253559977e-05],
[0.999962568283081, 3.739727253559977e-05],
...]
Вот predictions[i][j]
вероятность того, что ith
элемент в тестовом наборе имеет класс j
. Вы заметите, что для всех i
sum(predictions[i]) == 1.0
Комментарии:
1. Сумма прогнозов [i] не может быть равна 1, поскольку первые 2 i равны приблизительно 0,999.
2.
sum([0.999962568283081, 3.739727253559977e-05]) ~ 1.0
это то, что я имел в виду.predictions[i]
это список вероятностей для каждого класса.