@Andrei1penguin1

Почему не уменьшаются потери?

Доброго времени суток, есть модель:
model = models.Sequential()
        model.add(layers.Conv2D(32, (3, 3), activation="relu", input_shape=(218, 178, 3)))
        model.add(layers.MaxPooling2D((2, 2)))
        model.add(layers.Conv2D(64, (3, 3), activation="relu"))
        model.add(layers.MaxPooling2D((2, 2)))
        model.add(layers.Conv2D(128, (3, 3), activation="relu"))
        model.add(layers.MaxPooling2D((2, 2)))
        model.add(layers.Conv2D(128, (3, 3), activation="relu"))
        model.add(layers.MaxPooling2D((2, 2)))
        model.add(layers.Flatten())
        model.add(layers.Dense(512, activation="relu"))
        model.add(layers.Dense(4, activation="sigmoid"))
        model.compile(optimizer="rmsprop", loss="mse")

Тренируется она следующим образом:
train_dir = "../path/to/train/images"
        images= []
        coordinates = []
        with open("../path/images_boxes.csv") as file:
            for ii, i in enumerate(file.readlines()[1:2001]):
                if ii % 100 == 0:
                    print("=====Creating", ii, "images=====")
                info = i.replace("\n", "").split(",")
                # где i представляет собой следующее:
                # 000001.jpg,95,71,226,313
                # то есть структура такая:
                # image_id,x_1,y_1,width,height
                images.append(img_to_array(load_img(os.path.join(train_dir, info[0]))))
                # где train_dir/info[n] представляет собой путь до изображения
                coordinates.append([point for point in info[1:]])
        images= np.array(images, dtype="float32") / 255.0
        coordinates = np.array(coordinates, dtype="float32")
        train_images, test_images = images[:1500], images[1500:]
        train_coordinates, test_coordinates = coordinates[:1500], coordinates[1500:]
        model.fit(train_images, train_coordinates, validation_data=(test_images, test_coordinates), batch_size=20, epochs=5, verbose=1)
        model.save("model.h5")

Проблема собственно в чём:
loss: 75572.7324, модель явно настроена или собрана неправильно, на выходе, model.predict выдает вместо каких-то логичных значений координат ограничивающего прямоугольника сплошные единицы
Прошу подсказать, где я ошибся и что в своей моделе мне поменять?
  • Вопрос задан
  • 148 просмотров
Пригласить эксперта
Ответы на вопрос 2
@qid00000000
Мало что знаю, но информацию найду в гугле
Я конечно не имел много опыта с машинным обучением, однако возникают вопросы относительно кода. Например, что за число:

file.readlines()[1:2001]


И так несколько цифр с непонятным назначением.

Попробуйте заменить магические числа на человекочитаемые переменные. Это поможет понять код, а возможно, и определить проблему.

Также, круто, если предоставите исходные данные и код, чтобы была возможность не гадать по кусочкам (либо функциональный кусок того, что работает) и описать ожидаемый результат.
Ответ написан
@rPman
Веса в слоях нужно инициализировать значениями, например случайными
https://keras.io/api/layers/initializers/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы