随机向量函数链神经网络(RVFLNN)

89 篇文章 55 订阅
44 篇文章 27 订阅

洛伦兹系统

使用四阶龙格库塔成生成实验数据,参考博文:混沌系统数值模拟

d t = 0.02 d t = 0.02 dt=0.02, 包含 10000 个点.
在这里插入图片描述
在这里插入图片描述
红线和绿线是初始条件相差非常小的两条轨线,随时间发展分道扬镳,上图展示了混沌系统的初值敏感性。

RVFLNN

随机向量函数连接网络 random vector functional-link neural network
在这里插入图片描述

模型的表达式

Y = W ⋅ [ x ∣ ∣ ζ ( x W h + β h ) ] Y = W\cdot [x|| \zeta(xW_h+\beta_h)] Y=W[xζ(xWh+βh)]

python 实现

class RVFLNN:
    def __init__(self):
        self.N_i = None  # 输入节点数
        self.N_o = None  # 输出节点数
        self.N_h = 200  # 隐层节点数
        self.sigma = 1
        self.beta = 1e-6

        
    def train(self, X, Y):
        self.N_i = X.shape[0]
        self.N_o = Y.shape[0]
        self.W_i = np.random.uniform(-self.sigma,self.sigma, (self.N_h, self.N_i+1))
        
        Z = np.tanh(self.W_i.dot(np.vstack([X,np.ones([1,X.shape[1]])])))  
        H = np.vstack([Z,X])
        
        self.W_o = Y.dot(H.T.dot(np.linalg.inv(H.dot(H.T)+self.beta*np.eye(self.N_h+self.N_i))))
     
    def predict(self, X):
        Z = np.tanh(self.W_i.dot(np.vstack([X,np.ones([1,X.shape[1]])])))
        H = np.vstack([Z,X])
        return self.W_o.dot(H)

训练

np.random.seed(42)

model = RVFLNN()

n = 2  # 使用 n 个历史点作为输入

num_train = 8000
x_train = np.vstack([select_samples(x,0+i,num_train) for i in range(n)])
y_train = select_samples(x,n,num_train)

model.train(x_train, y_train)

测试

num_test = 2000
test_start = 8000
P = np.empty((3,num_test))
Q = select_samples(x,test_start, num_test)
p = np.vstack([select_samples(x,test_start-n+i,1) for i in range(n)])


for i in range(num_test):
    p_next = model.predict(p)
    P[:,i] = np.squeeze(p_next)
    p = np.vstack([p,p_next])[3:]


fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax = fig.add_subplot()
plt.plot(*P, 'r')
plt.plot(*Q, 'g')

在这里插入图片描述

plt.figure()
dim = ['x','y','z']
for i in range(3):
    plt.subplot(3,1,i+1)
    plt.plot(P[i,:].T, label='prediction')
    plt.plot(Q[i,:].T, label='true')
    plt.ylabel(dim[i])
    plt.legend(loc='upper right')

在这里插入图片描述
实验证明,RVFLNN 可以重建洛伦兹吸引子。

  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值