2017-08-22 1 views
0

Ich versuche, CNNs in den Griff zu bekommen und beginne mit einem ziemlich einfachen Datensatz von 213 Zeilen. Jeder ist so klassifiziert, dass er 6 aus 98 Kategorien passen muss. Selbst ein einfaches 3-Schicht-Netz ist nicht mehr als 20% Genauigkeit nach 50k + Epochen. Irgendwelche Vorschläge?Schlechte NN Genauigkeit (<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)) 

Vielen Dank im Voraus für jede Einsicht.

Cheers,

L3fos

+2

Bitte nur Tags verwenden, die auf einer Seite zur Kenntnis –

+1

nur auf die Frage verwandt sind: Ihr Modell ist ein Feed-Forward-neuronales Netz (KNN/DNN) anstelle eines CNN (= Convolutional Neural Network). – petezurich

+1

Nur eine weitere Randnotiz. Wenn Sie 98 Klassen und 213 Zeilen Daten haben. Sie haben also 2 Proben pro Klasse, das ist viel zu viel. Ich weiß nicht, ob Sie neu oder ein schlechter Arsch Experte sind, aber der Code sieht sehr komisch aus. Wenn Sie neu sind, sehen Sie sich einen Code in github mit einem ähnlichen Problem an, das Sie lösen möchten. Das hilft viel :) –

Antwort

0

Ich empfehle die Aktivierung Ihrer ersten Schicht relu einzustellen.

1

Wenn ich es richtig verstehe, verwenden Sie einen Datensatz mit 6 Funktionen und 98 Klassen. 98 Klassen sind wirklich viel.

Wenn wir 98/6 = 16.3 berechnen erhalten wir den Wert, wie gut Sie vorhersagen können, wenn Sie zufällig verwenden. Sie haben 20% Sie sind also ein bisschen besser als zufällig.

Ist es möglich, dass die Daten zu unordentlich sind und nicht auf die Klassen bezogen sind.

Wenn Sie mich Ihnen Daten und Ihr Ziel zeigen, konnte ich einen Blick darauf werfen konnte :)

+0

Gibt es eine gute Möglichkeit, CSV-Dateien an den Thread anzuhängen, um die Datensätze zu teilen? – L3fos

+0

Ja, weil es hilft. –

Verwandte Themen