Ich trainiere derzeit meine Regression Netzwerk mit Crossvalidierung, ich habe keine Etiketten, aber spezifische Eingabe, die auf einen bestimmten Ausgang zugeordnet werden sollte, sollte das Netzwerk dann die Zuordnung generieren.Ich habe ein paar Probleme mit, wie die Falten werden definiert.Wie ist die Größe jedes k Falten definiert?
die Art, wie ich tun Kreuzvalidierung ist wie folgt:
############################### Training setup ##################################
#Define 10 folds:
seed = 7
np.random.seed(seed)
kfold = StratifiedKFold(n_splits=10, shuffle=True, random_state=seed)
print "Splits"
cvscores_loss = []
for train, test in kfold.split(train_set_data_vstacked_normalized,train_set_output_vstacked):
print "Model definition!"
model = Sequential()
#act = PReLU(init='normal', weights=None)
model.add(Dense(output_dim=400,input_dim=400, init="normal",activation=K.tanh))
#act1 = PReLU(init='normal', weights=None)
model.add(Dense(output_dim=400,input_dim=400, init="normal",activation=K.tanh))
#act2 = PReLU(init='normal', weights=None)
model.add(Dense(output_dim=400, input_dim=400, init="normal",activation=K.tanh))
act4=ELU(10000)
model.add(Dense(output_dim=13, input_dim=300, init="normal",activation=act4))
print "Compiling"
model.compile(loss='mean_squared_error', optimizer='RMSprop', metrics=["accuracy"])
print "Compile done! "
print '\n'
print "Train start"
model.fit(train_set_data_vstacked_normalized[train],train_set_output_vstacked[train], nb_epoch=10, verbose=1)
loss, accuracy = model.evaluate(x=train_set_data_vstacked_normalized[test],y=train_set_output_vstacked[test],verbose=1)
print
print('loss: ', loss)
print('accuracy: ', accuracy)
print()
print model.summary()
print "New Model:"
cvscores_loss.append(loss)
print("%.2f%% (+/- %.2f%%)" % (numpy.mean(cvscores_loss), numpy.std(cvscores_loss)))
Problem mit diesem Code ist, dass ich nie die for-Schleife eingeben .. eine Warnmeldung nach „Splits“ erhalten gedruckt wird ... Es ist.
Splits
/home/k/.local/lib/python2.7/site-packages/sklearn/model_selection/_split.py:579: Warning: The least populated class in y has only 1 members, which is too few. The minimum number of groups for any class cannot be less than n_splits=10.
Welche es in Frage stellen, wie kfold, weiß, was die Ein- und Ausgang Dimensionen meines neuronalen Netzes ist? ...
Soll ich es irgendwo definieren? oder wie? ..
Its a Regressionsproblem .. Also habe ich keine Klassen als solche .. Ich trainiere mein Netzwerk, um eine bestimmte Eingabe einer bestimmten Ausgabe zuzuweisen. Eine bestimmte Ausgabe ist keine Beschriftung, sondern ein Rohmerkmal mit der Länge 13. Welcher "train_set_output_vstacked [0]" auch ausgegeben wird. –
StratifiedKFold erfordert Klassen. Verwenden Sie KFold für die Regression. Oder wenn Sie cross_val_score verwenden, dann wählt es basierend auf der Regression oder Klassifizierung, welche verwendet werden soll. – simon