Neural network NN精度差(<;20%)

Neural network NN精度差(<;20%),neural-network,keras,keras-layer,Neural Network,Keras,Keras Layer,我试图开始了解CNN,并从一个相当简单的213行数据集开始。每一个都被分类,因此它必须适合98个类别中的6个。即使是一个简单的3层网络,在50k+个时代之后,其精确度也不会超过20%。有什么建议吗 from keras.models import Sequential from keras.layers import Dense from keras.layers import Flatten from keras.layers import LSTM from keras.layers imp

我试图开始了解CNN,并从一个相当简单的213行数据集开始。每一个都被分类,因此它必须适合98个类别中的6个。即使是一个简单的3层网络,在50k+个时代之后,其精确度也不会超过20%。有什么建议吗

from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Flatten
from keras.layers import LSTM
from keras.layers import Dropout
from keras.layers import Reshape
from keras.layers import MaxPooling2D
from keras.layers.convolutional import Convolution1D
from keras.layers.convolutional import Convolution2D
from keras.layers.normalization import BatchNormalization
import numpy

ins = numpy.loadtxt("inputs.csv", delimiter=",")
outs = numpy.loadtxt("probs.csv", delimiter=",")

X = ins[:,0:9]
Y = outs[:,0:98]

model = Sequential()
model.add(Dense(12, input_dim=9, activation='sigmoid'))
model.add(Dense(60, activation='relu'))
model.add(Dense(97, activation='sigmoid'))
model.compile(loss='mean_absolute_percentage_error', optimizer='RMSprop', metrics=['accuracy'])
model.fit(X, Y, epochs=50000, batch_size=200)
scores = model.evaluate(X, Y)
print("\n%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
提前感谢您提供的任何见解

干杯


L3fos

我建议将第一层的激活设置为ReLu。

如果我理解正确,您可以使用具有6个功能和98个类的数据集。 98节课真的很多

如果我们计算98/6=16.3,我们得到的值是,如果你使用随机变量,你能预测的结果有多好。你有20% 所以你比随机的要好一点

数据是否可能太乱,并且与类无关


如果你能向我展示你的数据和你的目标,我可以看一看:)

请只使用与问题相关的标签只是一个旁注:你的模型是一个前馈神经网络(ANN/DNN),而不是CNN(=卷积神经网络)。只是另一个旁注。如果您有98个类和213行数据。所以你们每堂课有2个样本,这是非常重要的。我不知道你是新来的还是一个糟糕的专家,但是代码对我来说很奇怪。如果您是新手,请查看github中的一些代码,其中包含您想要解决的类似问题。这很有帮助:)有没有一种好的方法将csv文件附加到线程以共享数据集?是的,因为它会有所帮助。