Machine learning 在训练keras模型时,精度保持不变。原因可能是什么?

Machine learning 在训练keras模型时,精度保持不变。原因可能是什么?,machine-learning,neural-network,deep-learning,keras,Machine Learning,Neural Network,Deep Learning,Keras,我一直在尝试使用keras训练一个简单的skip-gram-word2vec模型。 经过一段时间的训练,我注意到准确度没有任何变化 我尝试过的事情: 1.我试着把优化器改成adam,rmsprop。 2.对于sgd,我尝试过将学习从1.0逐步改为0.000001 3.我试着改变批量大小 还是不走运 下面是一些代码 def make_model(self,vocab_size=256,vec_dim=100): model=Sequential() model.add(Dense(

我一直在尝试使用keras训练一个简单的skip-gram-word2vec模型。 经过一段时间的训练,我注意到准确度没有任何变化

我尝试过的事情: 1.我试着把优化器改成adam,rmsprop。 2.对于sgd,我尝试过将学习从1.0逐步改为0.000001 3.我试着改变批量大小

还是不走运

下面是一些代码

def make_model(self,vocab_size=256,vec_dim=100):
    model=Sequential()
    model.add(Dense(vec_dim,activation="sigmoid",input_dim=vocab_size))
    model.add(Dense(vocab_size,activation="sigmoid"))
    sgd=SGD(lr=1.0)
    model.compile(loss="categorical_crossentropy",optimizer=sgd,metrics=["accuracy"])
    return model

def _get_callbacks(self):
    earlystop=EarlyStopping(monitor="val_loss",min_delta=0.0001,patience=10,verbose=2)
    checkpoint=ModelCheckpoint("checkpt.hdf5",period=10,verbose=2)
    reducelr=ReduceLROnPlateau(monitor="val_loss",factor=0.1,patience=5,verbose=2)
    return [earlystop,checkpoint,reducelr]

def train(self,model,X,y):
    model.fit(X,y,nb_epoch=1000,callbacks=self._get_callbacks(),validation_split=0.1,verbose=2,batch_size=300)
    model.save("model.hdf5")
对于每个单词,X是len 256的一个热向量

在len 256的一个热向量中的y表示X上下文中的跳过字

例如,如果序列是[2,6,5,7,9] X将是 [5,5,5,7,7,7…]

我会的 [2,6,7,9,6,5,9...] 对于序列中的每个单词,依此类推

这就是我尝试训练时发生的情况:

9s - loss: 4.5012 - acc: 0.1794 - val_loss: 4.5873 - val_acc: 0.1327
Epoch 2/1000

9s - loss: 4.2679 - acc: 0.1801 - val_loss: 4.8339 - val_acc: 0.1327
Epoch 3/1000

9s - loss: 4.2363 - acc: 0.1801 - val_loss: 4.7040 - val_acc: 0.1327
Epoch 4/1000

9s - loss: 4.2102 - acc: 0.1801 - val_loss: 4.6947 - val_acc: 0.1327
Epoch 5/1000

9s - loss: 4.1882 - acc: 0.1801 - val_loss: 4.6625 - val_acc: 0.1327
Epoch 6/1000

9s - loss: 4.1777 - acc: 0.1801 - val_loss: 4.6303 - val_acc: 0.1327
我等了大约50个时代,acc仍然没有改变


知道我做错了什么吗?每次我使用keras时都会遇到这个问题,即使是在培训其他模型(如使用LSTM生成RNNs文本的语言建模)时也是如此。

也许你的学习率太高了。您可以尝试将其设置为0.0001

sgd=SGD(lr=0.0001)

很可能没有什么错误,这是您从数据和模型中获得的最佳精确度。@thc使用单隐层神经网络,人们对跳过图的精确度已超过90%。我同意数据可能是问题所在。它似乎太少了,无法划分为256个类别。但这个问题甚至在其他模型和数据上也出现了。我通常可以在改变批量大小后四处走动。但我真的很困惑批量大小如何能产生如此剧烈的影响。在这种情况下,即使批量大小调整也不起作用。尝试将激活从
sigmoid
更改为
ReLU
?当您使用
sigmoid
时,可能层响应已饱和。在具有单个隐藏层的网络上饱和?这甚至不是一个深度网络。我认为不太可能。但仍然如此。我会尽量让你知道的。换成relu是不行的。