当前位置:  开发笔记 > 人工智能 > 正文

在TensorFlow中使用矩阵乘法函数

如何解决《在TensorFlow中使用矩阵乘法函数》经验,为你挑选了1个好方法。

我对tf.matmul()在TensorFlow中使用该函数感到有点困惑.不过,我的问题可能更多是关于深度学习的理论.假设你有一个输入X和权重矩阵W(假设零偏差),我想计算WX作为输出,可以通过tf.matmul(W, X).但是,在初学者的教程MNIST中,它是相反的,tf.matmul(X, W)而是用来代替.在另一方面,在接下来的教程TensorFlow机械101,tf.matmul(W, X)被使用.由于矩阵大小对于乘法很重要,我想知道是否有人可以澄清这个问题.



1> dga..:

我认为你必须误读机制101教程 - 或者你能指出具体的路线吗?

一般来说,对于网络层,我认为输入"流过"权重.为了表示这一点,我编写tf.matmul(Inputs, Weights)以生成该层的输出.然后,该输出可能会b向其添加偏差,并将其结果输入非线性函数(如relu),然后输入另一个tf.matmul作为下一层的输入.

其次,请记住可以调整权重矩阵的大小以产生多个输出.这就是为什么它是一个矩阵,而不仅仅是一个矢量.例如,如果你想要两个隐藏单位并且你有五个输入特征,你可以使用一个形状[5, 2]权重矩阵,就像这样(为了便于说明而显示在numpy中 - 你可以在tensorflow中做同样的事情):

import numpy as np
a = np.array([1, 2, 3, 4, 5])
W = np.array([[.5, .6], [.7, .8], [.9, .1], [.2, .3], [.4, .5]])

>>> np.dot(a, W)
array([ 7.4,  6.2])

这有一个很好的行为,如果你然后添加批量维度a,它仍然有效:a = np.array [[1,2,3,4,5],[6,7,8,9,0]]

>>> np.dot(a, W)
array([[  7.4,   6.2],
       [ 20.9,  17.7]])

这正是您在使用tf.matmul从输入要素转到隐藏单位,或从隐藏单位的一层到另一层时所做的.

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有