CNN Acc и постоянная потеря с пользовательскими данными изображения - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь обучить простую модель CNN для задачи двоичной классификации в Керасе с набором данных изображений, которые я добыл.Проблема в том, что я получаю постоянную точность, val_accuracy и убытки после нескольких эпох.Я неправильно обрабатываю данные?Или это что-то в настройках модели?

Вначале я использовал softmax в качестве конечной функции активации и категориальной косентропии, я также использовал функцию to_categorical на ярлыках.

После прочтениячтобы понять, что обычно вызывает это, я решил вместо этого использовать sigmoid и binary_crossentropy, а не to_categorical.Тем не менее проблема сохраняется, и я начинаю задумываться, не проблема ли это с моими данными (эти два класса слишком похожи) или как я передаю массивы изображений.

conkeras1 = []
pics = os.listdir("/Matrices/")
# I do this for the images of both classes, just keeping it short.
for x in range(len(pics)):
       img = image.load_img("Matrices/"+pics[x])
       conkeras1.append(img)

conkeras = conkeras1+conkeras2
conkeras = np.array([image.img_to_array(x) for x in conkeras]).astype("float32")
conkeras = conkeras / 255 # I also tried normalizing with a z-score with no success

yecs1 = [1]*len(conkeras1)
yecs2 = [0]*len(conkeras2)

y_train = yecs1+yecs2
y_train = np.array(y_train).astype("float32")

model = Sequential([
Conv2D(64, (3, 3), input_shape=conkeras.shape[1:], padding="same", activation="relu"),
Conv2D(32, (3, 3), activation="relu", padding="same"),
Flatten(),
Dense(500, activation="relu"),
#Dense(4096, activation="relu"),
Dense(1, activation="sigmoid")
])

model.compile(loss=keras.losses.binary_crossentropy,
             optimizer=keras.optimizers.Adam(lr=0.001),
             metrics=['accuracy'])

history = model.fit(conkeras, y_train,
                   batch_size=32,
                   epochs=32, shuffle=True,
                   verbose=1,
                   callbacks=[tensorboard])


Вывод, который я получаю, таков:

975/975 [==============================] - 107s 110ms/step - loss: 8.0022 - acc: 0.4800
Epoch 2/32
975/975 [==============================] - 99s 101ms/step - loss: 8.1756 - acc: 0.4872
Epoch 3/32
975/975 [==============================] - 97s 100ms/step - loss: 8.1756 - acc: 0.4872
Epoch 4/32
975/975 [==============================] - 97s 99ms/step - loss: 8.1756 - acc: 0.4872

и это формы набора и меток

>>> conkeras.shape
(975, 100, 100, 3)
>>> y_train.shape
(975,)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...