自适共振神经网络算法 ART 算法 代码实现


自适共振神经网络算法 ART1 算法python 代码实现


由于学习需要ART算法,python 和matlab 又没有直接调用的模块和函数,故自己写了一个简单易懂、快捷优化了的ART1 算法,代码一共80行左右,附带详细解析,如下:

# coding=utf-8
import numpy as np


# 初始化内心向量矩阵B 和外星向量矩阵T (每一列标识一个 内星/外星 向量)
# 内星向量是C层传入R层的权值 ,外星向量是R层记录模式的向量,R层反馈给C层
def Set_B0_T0(n):
    b = 1 / (1 + n)
    B = []
    T = []
    for i in range(n):
        B.append(b)
        T.append(1)
    # 先构造 一列初始向量,再将向量矩阵化(因为后续的算法针对矩阵化的 matrix类型进行)
    # numpy的mat函数就是将向量转化成矩阵的
    B = np.mat(B)
    T = np.mat(T)
    # 矩阵.T 表示矩阵的转置,将一行转成一列了(因为我是用列来表示 内\外 星向量的)
    B = B.T
    T = T.T
    return B, T


# 当竞争获胜向量匹配成功后,才有权力改变它的 内\外星向量权值
# 参照书本给的方式,定义权值改变函数
def AdjustBT(B, T, x, j):
    x = np.mat(x)
    xigama_TX = x * T[:, j]  # 矩阵*矩阵= 表示矩阵乘法
    xigama_TX = xigama_TX[0, 0]
    B[:, j] = np.multiply(T[:, j], x.T) * (1 / (0.5 + xigama_TX))
    T[:, j] = np.multiply(T[:, j], x.T)  # np.multiply 是矩阵点乘
    return B, T


# 定义 竞争函数,选取R层竞争获胜的向量;由于每次只选一个竞争获胜的向量,再配对不成功的回调过程中
# 会造成Python代码十分麻烦的内嵌函数形式,所以我直接比较他们并且排序,返回一个按大小顺序排列的索引 list
# 如果需要回调,我直接再这个list 里面依次选择就行了 ,十分方便
<
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值