我有一些以表示的数据input_x
。它是一个未知大小的张量(应分批输入),每个项目的大小都为n
。input_x
经历tf.nn.embedding_lookup
,所以embed
现在有尺寸[?,n, m]
,其中m
是嵌入尺寸并?
指未知的批量大小。
此处描述:
input_x = tf.placeholder(tf.int32, [None, n], name="input_x")
embed = tf.nn.embedding_lookup(W, input_x)
我现在正尝试将输入数据中的每个样本(现在通过嵌入维度进行扩展)乘以矩阵变量U
,而我似乎不知道该怎么做。
我首先尝试使用,tf.matmul
但是由于形状不匹配而导致错误。然后,我通过扩展的维度U
和应用来尝试以下操作batch_matmul
(我还尝试了从进行的功能tf.nn.math_ops.
,结果相同):
U = tf.Variable( ... )
U1 = tf.expand_dims(U,0)
h=tf.batch_matmul(embed, U1)
这将通过初始编译,但是当应用实际数据时,出现以下错误:
In[0].dim(0) and In[1].dim(0) must be the same: [64,58,128] vs [1,128,128]
我也知道为什么会发生这种情况-我复制了的尺寸,U
现在是1
,但是minibatch的大小64
不合适。
我如何在张量矩阵输入上正确地进行矩阵乘法(对于未知的批量大小)?
该MATMUL操作仅适用于矩阵(二维张量)。这是执行此操作的两种主要方法,都假设U
是2D张量。
将其embed
切成2D张量,然后将每个张量分别乘以U
。这样做最简单tf.scan()
:
h = tf.scan(lambda a, x: tf.matmul(x, U), embed)
另一方面,如果效率很重要,则最好将其重塑embed
为2D张量,以便可以使用一个matmul
像这样的乘法完成乘法:
embed = tf.reshape(embed, [-1, m])
h = tf.matmul(embed, U)
h = tf.reshape(h, [-1, n, c])
中c
的列数在哪里U
?最后一次重塑将确保它h
是一个3D张量,其中第0个维度与该批次对应,就像原始的x_input
和embed
。
从学习利用MATLAB处理矩阵来入手,是入门MATLAB的最好方法!下面就让我们来看看下面这些例子。 输入矩阵有以下几种不同方法: 直接输入组成矩阵的元素。 从外部文件引入矩阵。 利用自带的函数构成矩阵。 利用在*.M文件内自定义的函数来构成矩阵。 下面让我们来输入杜勒的魔方的一组元素,只要遵循下列几个基本步骤就可以了: 用空格或者逗号来区分一行里不同的元素。 用分号';'来区分不同的行。 用方括
我在一个角度项目中使用材料。 除matInput外,我使用的所有材质组件都工作。 我很好地导入了这个组件,我的印象是它被很好地检测到了,但是它的css没有被考虑进去。 _ 在此输入图像描述 垫按钮工作,但垫输入没有。
我是python的新手,在处理矩阵时遇到了一个问题。 我有一个矩阵,比方说 现在,我想让矩阵中的所有元素都等于零,除了在矩阵中重复最多次的元素。(在这种情况下,它是3)。 所以预期的结果是, 如果有人能帮我做这个的python代码,那真的很有帮助。
问题内容: 我正在尝试编写一种算法,用于在给定的子矩阵中查找子矩阵。为了解决这个问题,我编写了以下代码: 这段代码可以正常工作,但是我不确定这是问题的确切解决方案还是可以解决。请提供您的专家意见。提前致谢。 问题答案: 该算法对4×4矩阵和2×2子矩阵进行了硬编码。否则,它看起来像蛮力算法。 我会这样表示: 如果您想要更有效的方法,建议您将它们压扁,如下所示: 并在此序列中搜索以下模式: 使用标准
我目前正在做一个音频信号处理项目,需要在Java中的一个复杂矩阵上使用SVD。我当前的线性代数库是Apache Commons。但它只提供实矩阵的SVD,JAMA、JBLAS、EJML、ojAlgo都不支持复杂的SVD。 我一直在用一些技巧从一个等效的实矩阵中找到SVD。然而,当我重建矩阵时,这种技术对于虚部有很大的不准确性。
着色器语言中通过关键字mat2、mat3、mat4分别声明一个2x2矩阵、3x3矩阵、4x4矩阵,通过内置函数mat2()、mat3()、mat4()分别创建一个2x2矩阵、3x3矩阵、4x4矩阵。 关键字 数据类型 mat2 2x2矩阵,4个元素 mat3 3x3矩阵,9个元素 mat4 4x4矩阵,16个元素 声明变量 关键子mat4声明一个4x4矩阵 mat4 matrix4; 构造函数赋