问题描述
我对https://www.sciencedirect.com/science/article/pii/S1568494604001012中提出的非黑边学习算法的再现结果有一些疑问 我写了整个类来计算仿真,但是我猜这个问题必须很简单,因为它是简单的数学,应该是可重现的
- 我正在创建2d节点值数组和3d权重数组(每个步骤我在一个维中为权重添加1个2d矩阵,在节点中为新值添加1行)
- 我更新边缘值(只是开始时不为零的那些值)2
- 我更新节点的值(通过sigmoid函数“标准化”它们) 1
n-学习率,为0.04 伽玛0.98 nhb是一门课程,但太大了,无法发布所有内容。看来问题出在这里,我会很感激找到它的帮助,sign是sign function:)
边缘是有组织的,因此行是源节点,列是目标节点,例如W [2,1,3]将是第3次迭代中从节点2到节点4的边的值。 A [3,1]将是第4次迭代中节点2的值。
@H_502_16@ for step in range(100):
nhb.next_step()
# updating A
for i in range(nConcept):
A = nhb.A[-2,i] + np.dot(nhb.A[-2],nhb.W[-2,:,i])
nhb.A[-1,i] = nhb.sigmoid(A,1)
# updating W
for row in range(nConcept): # source
for col in range(nConcept): # target
if (row == col) or (nhb.W[0,row,col] == 1):
continue
nhb.W[-1,col] = nhb.gamma * nhb.W[-2,col] + nhb.n * nhb.A[-2,col] *
(nhb.A[-2,row] - nhb.sign(nhb.W[-2,col]) * nhb.A[-2,col] * nhb.W[-2,col])
# nhb.update_edge(row,col,option=1)
节点和边的初始值在文章中有所描述,但
@H_502_16@W_init = np.asarray([[0,-0.4,-0.25,0.3],[0.36,0],[0.45,[-0.9,[0,0.6,0.3,0]])
A0 = np.asarray([[0.4,0.7077,0.6120,0.7171,0.3]])
然后在第17步之后应该是:
@H_502_16@W_final =np.asarray([
[0,-0.1736,-0.0265,0.479],[0.5103,[0.5753,[-0.90,0.707,0.493,0]])
当我离我很近但仍然不在的时候
@H_502_16@W = np.asarray([[ 0.,-0.24525467,-0.0690278,0.,0.44435492],[ 0.51393603,0. ],[ 0.55661828,[-0.83920385,[ 0.,0.68916266,0.46529029,0. ]])
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)