我正在尝试训练 ANN,但直到现在它还没有学习训练样本的较低值。我尝试过使用不同的 python 库来训练 ANN。目的是根据其他天气参数预测太阳辐射(回归问题)。我认为 ANN 将较低的值(冬季/阴天)与夜间值(可能)混淆了。我尝试了以下方法,但都没有奏效;
- 在不同值之间缩放数据,例如 [0,1],[-1,1]
- 标准化数据以具有零均值和单位方差
- 洗牌数据
- 增加训练样本(从 3 年到 10 年)
- 使用不同的训练函数(例如 bfds、gdm)
- 尝试不同的传递函数(例如 LogSig、TanSig)
- 使用少量输入变量
- 改变隐藏层和隐藏层的神经元
下面是我使用神经实验室的代码,但我也使用了 nolearn/lasagne,但它也不起作用。
f = np.loadtxt('C:\Users\ABC.txt')
input = f[:,:8]
output = f[:,8:]
size = len(input)
output3=output
input3=input
norm_inp = nl.tool.Norm(input)
input4 = norm_inp(input)
norm_out = nl.tool.Norm(output)
output4 = norm_out(output)
net = nl.net.newff([[0, 1], [0, 1], [0, 1],[0,1],[0,1],[0,1],[0,1],[0,1]],[100, 1])
net.trainf = nl.train.train_bfgs
net.layers[0].transf= nl.trans.LogSig()
#net.layers[1].transf= nl.trans.LogSig()
error = net.train(input4, output4, epochs=1000, show=10, goal=0)
networksave = net.save('netD1.dat')