首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >轴= 0,(M,k) * (M,l) -> (M,k*l)

轴= 0,(M,k) * (M,l) -> (M,k*l)
EN

Stack Overflow用户
提问于 2017-07-08 07:01:09
回答 2查看 266关注 0票数 0

我有两个矩阵,F(shape = (4000,64))和M(shape=(4000,9)),并希望得到形状= (4000,64*9)的结果。

我可以用下面的代码来思考for循环(理想)

代码语言:javascript
复制
result = np.zeros(4000,64*9)
ind = 0
for i in range(64):
    for j in range(9):
        result[:,ind]= tf.muliply(F[:,i]),M[:,j])
        ind += 1

但我知道循环不支持tensorflow

是否有执行上述代码相同功能的函数?

编辑)

我想出了个主意。F,m重复形状(4000,64*9)立克爬行动物在MATLAB和元素乘。你还能有别的想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-08 08:45:17

你可以用

代码语言:javascript
复制
tf.reshape(M[:,tf.newaxis,:] * F[...,tf.newaxis], [4000,-1])
票数 1
EN

Stack Overflow用户

发布于 2017-07-08 07:43:33

如果您对tf.matmulM(shape=(4000,1, 9))的输入进行了整形,则可以使用M(shape=(4000,1, 9))。举个例子

代码语言:javascript
复制
F = tf.Variable(tf.random_uniform(shape=(4000, 64, 1)))
M = tf.Variable(tf.random_uniform(shape=(4000, 1, 9)))
C = tf.matmul(F, M)
C = tf.reshape(C, (4000, -1))
sess = tf.InteractiveSession()
tf.global_variables_initializer().run()
print(C.eval().shape)

#Output: (4000, 576)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44983465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档