我在Skorch中使用GridSearchCV,但是在某些循环中,火车损失/ valacc值没有变化,而对于某些情况,则是。我使用的是非常基本的参数,因此结果应该相当相似。例如 在此示例中,什么都没有发生,并且直到最后一个时期都完全一样
epoch train_loss valid_acc valid_loss dur
------- ------------ ----------- ------------ ------
1 0.6931 0.4961 0.6931 0.0885
2 0.6931 0.4961 0.6931 0.0881
3 0.6931 0.4961 0.6931 0.0921
4 0.6931 0.4961 0.6931 0.0815
5 0.6931 0.4961 0.6931 0.0790
6 0.6931 0.4961 0.6931 0.0685
7 0.6931 0.4961 0.6931 0.0853
8 0.6931 0.4961 0.6931 0.0951
9 0.6931 0.4961 0.6931 0.0873
10 0.6931 0.4961 0.6931 0.1011
11 0.6931 0.4961 0.6931 0.0944
12 0.6931 0.4961 0.6931 0.0839
13 0.6931 0.4961 0.6931 0.0758
14 0.6931 0.4961 0.6931 0.0754
15 0.6931 0.4961 0.6931 0.0832
但是在下一次迭代中,一切正常,并且trainloss / validloss有所改善
epoch train_loss valid_acc valid_loss dur
------- ------------ ----------- ------------ ------
1 0.6931 0.4992 0.6931 0.0859
2 0.6930 0.5429 0.6921 0.0925
3 0.6907 0.5491 0.6840 0.0861
4 0.6808 0.6147 0.6689 0.0797
5 0.6633 0.6318 0.6484 0.0734
6 0.6413 0.6989 0.6280 0.0757
7 0.6224 0.7114 0.6168 0.0964
8 0.6105 0.7254 0.6153 0.0949
9 0.6068 0.7379 0.6112 0.0836
10 0.5935 0.7426 0.6048 0.1007
11 0.5811 0.7441 0.6021 0.0835
12 0.5693 0.7644 0.5954 0.0776
13 0.5612 0.7488 0.6001 0.0773
14 0.5548 0.7878 0.5763 0.0806
15 0.5338 0.7691 0.5811 0.0750
有人知道背后的原因吗?
(还有一种方法可以阻止fit(x,y)打印所有循环吗?)
ann = NeuralNetBinaryClassifier(module=Net66,max_epochs=20, lr = 0.01, optimizer=torch.optim.Adam,
criterion=nn.BCELoss,batch_size=800, iterator_train__shuffle=True)
params = {
'lr': [0.001, 0.002],
'max_epochs': [25, 50],
}
gs = GridSearchCV(ann, params, refit=False, scoring='accuracy', cv =2)
gs.fit(X, y)
答案 0 :(得分:0)
很难不看架构或数据就给出正确的答案,但是有很多原因导致预测不变。调试的最佳方法是直接查看预测,即使用net.forward(X_train)
获取网络的预测或通过net.predict_proba(X_train)
查看概率。可能是初始化问题,您的网络始终会预测1或0。可能是模块/数据预处理或数据拆分中的错误。
(还有一种方法可以阻止
fit(x,y)
打印所有循环吗?)
是的,您可以将verbose=0
传递到NeuralNet
以使日志记录静音。