【发布时间】:2022-07-05 21:25:37
【问题描述】:
我实现了一个两层神经网络(根据 Kolmogorov-Arnold 定理,这足以表示 n 个变量的任何非线性函数)来预测时间序列。然而,到神经网络结束时,接收到的预测波动率下降到几乎为零,并变成一条直线(我附上预测屏幕和神经网络的源代码)。我增加了隐藏层的神经元数量、epoch 数、训练样本的大小、学习率,改变了训练样本数据的归一化范围,改变了初始权重的范围。没有什么帮助。训练样本大小为336个样本,训练方法为误差反向传播,归一化方法为minimax。此外,当使用双曲正切作为激活函数时,情况有所改善,但图形看起来也很奇怪。 ReLU 输出“直接预测”。有人对这个问题有任何想法吗?
import random
import sys
import numpy
import math
eta=0.0001 #learning rate
n=200 #number of training epoch. There were also 500, 1000, 5000
inp=30 #input layer size
m=60 #hidden layer size
y=0 #output signal
t=0 #target signal
e=0 #error
d_y=0 #local gradient for the last neuron
err=0 #calculated network error for output neuron
err_av=0 #average network error
path='dataTrain.txt' #training sample
path2='dataLaunch.txt' #launching a forecast
day = 365 #number of days of forecasting
...
其余的在网站上:https://ideone.com/vV2QW6
截图(激活函数-sigmoid):https://ibb.co/GHrTGLr
截图(激活函数-双曲正切):https://ibb.co/WHFX3Sc
感谢关注。
【问题讨论】:
标签: python machine-learning neural-network