python - 从 numpy 中的数学表达式中删除 for 循环
问题描述
给定以下表达式,我想在不使用 for 循环的情况下计算它。i,j 的范围是相同的 (self.dims[0])。
我目前的实现是:
dLoss_W1 = np.zeros(self.dims[1], self.dims[0])
for i in range(self.dims[0]):
for j in range(self.dims[0]):
dLoss_W1[i] = (
d_k(self.param['W1'][i], self.param['W1_t'][j]) -
d_k(self.param['W1'][i], self.param['W1'][j])
)
def theta(u,v):
return np.dot(u,v)/(np.linalg.norm(u)*np.linalg.norm(v))
def d_phi(theta):
return 1/(2*np.pi)*1/sqrt(1-theta**2)
def d_k(u,v):
return d_phi(theta(u,v))*(u-(u.T.dot(v).dot(u)))
def nInit(self):
np.random.seed(seed)
self.param['W1'] = np.random.randn(self.dims[1], self.dims[0])
self.param['W2'] = np.ones(self.dims[2], self.dims[1])
return
def teacher(self):
np.random.seed(seed+1)
self.param['W1_t'] = np.random.randn(self.dims[1], self.dims[0])
self.param['W2_t'] = np.ones(self.dims[2], self.dims[1])
return
解决方案
推荐阅读
- google-sheets - 如何在一个条件下导入多个列值?
- typescript - 无法安装 React Native Maps
- ios - 如何交互式收缩和增长 Table View Cell?
- c++ - 无法使用 Boost stacktrace + backtrace 获取行号
- javascript - Heroku 的 Websockets 在 chrome/firefox 上给出 404
- java - 谜语 for(... i++)
- json - 尝试在 Postgres 中插入 JSON 字段时出错
- sql-server - SSIS & SQL Server - 使用 SSIS 执行 SQL 任务在 SQL Server 中运行存储过程,然后将结果集返回到 SSIS 对象变量
- javascript - 重新渲染一个 React 组件
- python-3.x - Gtk.Application.run() 与 Gtk.main() Python3 中的最后机会异常处理