我想用我的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似乎总是存在一些无法消除的错误。
答案 0 :(得分:0)
首先,两个系统之间的tensorflow
,keras
或numpy
版本可能有所不同。如果不相同,则问题很可能是由于版本之间的实现上的细微差异,而不是ubuntu和Windows中的差异。
假设您的版本相同:
全部是因为您的模型架构相同,并不意味着它将获得相同的结果。
在开始任何训练之前,每一层都需要初始化一些权重。通常,默认的初始化函数为glorot_uniform
,该函数从一定范围内的均匀分布中随机抽取样本。
另外,Dropout
层在训练过程中会关闭随机神经元,这也会增加模型在不同训练过程中的表现方式。
您看到的区别不是Ubuntu与Windows,而是初始权重不同,Dropout
在训练过程中关闭了不同的神经元。