Та же модель Keras получила другой результат между Ubuntu и Windows? - PullRequest
0 голосов
/ 01 февраля 2019

Я хочу использовать свой компьютер Linux для обучения модели.Я непосредственно загружаю модель предварительного обучения в Windows, но потери увеличиваются, а точность снижается.

это моя тренировочная модель

def create_model(self):
    print("CREATE NEW MODEL")
    input_img = Input(shape=(nb_features,))

    selection = Dense(64, activation='relu')(input_img)
    selection = Dropout(0.20)(selection)
    selection = Dense(32, activation='relu')(selection)
    selection_out1 = Dropout(0.20)(selection)
    selection_out2 = Dense(nb_class)(selection_out1)
    selection_out3 = Activation("softmax")(selection_out2)

    self.model_1 = Model(input=input_img, output=selection_out1)
    self.model_2 = Model(input=input_img, output=selection_out2)
    # construct the selection model 
    self.model_3 = Model(input=input_img, output=selection_out3)
    # compile autoencoder
    self.model_3.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

def save_model(self, num=0):
    if num == -1:
        self.model_1.save("./model/model_1_")
        self.model_2.save("./model/model_2_")
        self.model_3.save("./model/model_3_")
    else:
        self.model_1.save("./model/model_1_" + str(num))
        self.model_2.save("./model/model_2_" + str(num))
        self.model_3.save("./model/model_3_" + str(num))

это мой вывод

Ubuntu
Epoch 193/200
6375/6375 [==============================] - 0s 14us/step - loss: 0.0188 - 
acc: 0.9936
Epoch 194/200
6375/6375 [==============================] - 0s 14us/step - loss: 0.0151 - 
acc: 0.9956

Windows
Epoch 193/200
6375/6375 [==============================] - 0s 17us/step - loss: 0.0043 - 
acc: 0.9995
Epoch 194/200
6375/6375 [==============================] - 0s 17us/step - loss: 0.0019 - 
acc: 0.9997

В Ubuntu, похоже, всегда есть неустранимая ошибка.

1 Ответ

0 голосов
/ 01 февраля 2019

Во-первых, могут быть различия в ваших tensorflow, keras или numpy версиях между двумя системами.Если они не одинаковы, проблема, скорее всего, из-за небольших различий в реализациях между версиями, а не различий в Ubuntu и Windows.

С учетом того, что ваши версии одинаковы:

Все, потому что архитектура вашей модели одинакова, не означает, что она получит те же результаты.

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

Кроме того, слои Dropout отключают случайные нейроны во время тренировки, что также добавляет некоторые различия в том, как вашМодель будет работать на разных тренировочных сессиях.

Разница, которую вы видите, не в Ubuntu против окон, а в различном начальном весе и Dropout отключении разных нейронов во время тренировки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...