【发布时间】:2021-01-27 20:51:56
【问题描述】:
要构建胶囊网络训练脚本,我需要计算许多小的矩阵向量乘法。
每个权重矩阵的大小最多为 20 x 20。
权重矩阵数量超过900个。
我很好奇tf.matmul 或tf.linalg.matvec 是最好的选择。
谁能给我一个优化训练脚本的提示?
【问题讨论】:
-
您能否提供有关您要执行的操作的更多信息?这些乘法是否相互独立?它们是连续的吗? (每个都取决于前一个的结果)。你用的是什么算法?你能概述一下你的整个算法吗?
-
算法与arxiv.org/pdf/1710.09829v2.pdf中的过程1非常相似。具体操作为u_hat_ij = W_ij * ui。每个 u_hat_ij 都是相互独立的。
-
如果我理解正确,我认为这只是广播的元素乘法?如果您的矩阵在 3D 张量
w中,形状为(900, 20, 20),向量在 2D 张量u中,形状为(900, 20),我认为您只需要u_hat = w * tf.expand_dims(u, axis=2)(会给您一个形状为 3D 的张量(900, 20, 20))。 -
这正是我对@jdehesa 的想法!你应该把它写成答案
标签: tensorflow matrix-multiplication