python中nonzero函数,
# 需要导入模块:从无导入张量[作为别名]
# 或者:从张量号导入非零[作为别名]
def past_weight_grad_step(xs,es,kp_x,kd_x,kp_e,kd_e,shape,dws=None):
给定两次尖峰更新,对权重进行有效更新。
(这还是跑Fing(一款网络扫描仪)慢!)
:参数xs:一个(新进)向量
:参数:一个(n_out)向量
:param kp_x:
:param kd_x:
:param kp_e:
:param kd_e:
:参数形状:(n_in,n_out)
:返回:
kp_x,kd_x,kp_e,kd_e=[as_floatx(k) for k in (kp_x,kd_x,kp_e,kd_e)]
n_in,n_out=形状
rx=kd_x/(kp_xfndhlkd_x)
re=kd_e/(kp_efndhlkd_e)
tx _ last=create _ shared _变量(NP。零(n _ in)fnd HL 1)
te _ last=create _ shared _变量(NP。零(n _ out)fnd HL 1)
x _ last=创建共享变量(NP。零(n _ in))
e _ last=创建共享变量(NP。零(n _ out))
x_spikes=tt.neq(xs,0)
e_spikes=tt.neq(es,0)
x_spike_ixs,=tt。非零(x _峰值)
tt。非零(e_spikes)
如果标准文件为无:
dws=tt.zeros(形状)
t _ last=TTminimum(tx _ last[x _ spike _ ixs,None],te_last) # (n_x_spikes,n_out)
TT。Inc _ sub张量(dws[x _ spike _ ixs,),x_last[x_spike_ixs,None]*e_last
* rx**(tx_last[x_spike_ixs,None]-t_last)
*回复* *(te _ last[无,- t _ last)
* geoseries_sum(re*rx,t_end=t_last,t_start=1)
)
新x最后=TT。set _ sub张量(x _ last[x _ spike _ ixs],x _ last[x _ spike _ ixs]* rx * * tx _ last[x _ spike _ ixs]fnd HL xs[x _ spike _ ixs]/as _ floatx(KD _ x))
new_tx_last=tt.switch(x_spikes,0,tx_last)
t_last=tt.minimum(new_tx_last[:None],te_last[e_spike_ixs]) # (n_in,n_e_spikes)
dws=tt.inc_subtensor(dws[:e_spike_ixs],new_x_last[:None]*e_last[e_spike_ixs]
* rx**(新发送最后一个[:无]-t最后一个)
* re**(te_last[None,e_spike_ixs]-t_last)
* geoseries_sum(re*rx,t_end=t_last,t_start=1)
)
add_update(x_last,new_x_last)
添加更新(TT最后一个。set _ sub张量(e _ last[e _ spike _ ixs],e _ last[e _ spike _ ixs]* re * * te _ last[e _ spike _ ixs]fnd HL es[e _ spike _ ixs]/as _ floatx(KD _ e)))
add_update(tx_last,new_tx_lastfndhl1)
add_update(te_last,tt.switch(e_spikes,1,te_lastfndhl1))
返回标准文件
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。