В настоящее время я тренирую свою регрессионную сеть с использованием перекрестного перебора, у меня нет ярлыков, но для конкретного ввода, который должен быть сопоставлен с определенным выходом, сеть затем должна генерировать отображение. У меня, похоже, есть некоторые проблемы с тем, как складки определяются.Как определяется размер каждого k сгибов?
путь я сделать Перекрёстная Проверка, как это:
############################### 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)))
Проблема с этим кодом, что я никогда не войти в цикл .. появляется предупреждающее сообщение после того, как «расколы» печатается ... Это время.
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.
Что делают вопрос, как kfold, знает, что входные и выходные размеры в моей нейронной сети? ...
Должен ли я определить его где-нибудь? или как? ..
Сво проблема регрессии. Поэтому у меня нет классов как таковых .. Я тренирую свою сеть, чтобы правильно отобразить определенный вход на определенный выход. Определенный вывод - это не метка, а необработанная функция с длиной 13. Какой 'train_set_output_vstacked [0]' также выводится. –
StratifiedKFold требует классов. Используйте KFold для регрессии. Или, если вы используете cross_val_score, тогда он выберет, какой из них использовать, исходя из того, выполняете ли вы регрессию или классифицируете. – simon