我正在尝试编写keras的逻辑回归模型。但是我发现了一些问题:
我使用的数据来自Coursera机器学习课程(由Andrew NG教授)ex2。
我的代码如下:
def model():
input_layer = Input(shape=(2,))
dense1 = Dense(1,activation='sigmoid',kernel_initializer=RandomNormal(seed=42),bias_initializer='zeros')(input_layer)
model = Model(input_layer,dense1)
return model
model.compile(loss=keras.losses.binary_crossentropy,optimizer=Adam(),metrics=['accuracy'])
model.fit(x=X,y=y,batch_size=10,epochs=10,verbose=1)
这是我得到的结果: 100/100 [=============================]-0s 120us / step-损耗:0.6335-acc:0.6000 时代10/10 100/100 [=============================]-0s 130us / step-损耗:0.6326-acc:0.6000 >
但是,如果我使用matlab fminunc
函数来查找结果,则会得到:
火车精度:89.000000
为什么结果会有所不同?
谢谢
答案 0 :(得分:0)
首先请确保您已标准化输入数据。尝试像这样标准化它:
X = X.astype('float32')
X_mean = X.mean(axis=0)
X -= X_mean
X_std = X.std(axis=0)
X /= X_std + 1e-8
进一步,在这种情况下,提高学习率也可能会有所帮助:optimizer=Adam(lr=1e-2)
,它有助于培训以更少的时间收敛到解决方案。