我要执行特定操作。即从一个矩阵:
A = np.array([[1,2],
[3,4]])
Run Code Online (Sandbox Code Playgroud)
到以下
B = np.array([[1, 0, 0, 2, 0, 0],
[0, 1, 0, 0, 2, 0],
[0, 0, 1, 0, 0, 2],
[3, 0, 0, 4, 0, 0],
[0, 3, 0, 0, 4, 0],
[0, 0, 3, 0, 0, 4]])
Run Code Online (Sandbox Code Playgroud)
换句话说:将每个条目乘以单位矩阵并保持相同的顺序。现在,我使用以下代码通过使用numpy来完成此操作。这里N
和M
是起始矩阵的维数,并且单位矩阵的维数。
l_slice = 3
n_slice = 2
A = np.reshape(np.arange(1, 1+N ** 2), (N, N))
B = np.array([i * np.eye(M) for i in A.flatten()])
C = B.reshape(N, N, M, M).reshape(N, N * …
Run Code Online (Sandbox Code Playgroud) 这里有没有人知道该torch.squeeze
函数是否尊重批次(例如第一)维度?从一些内联代码来看,它似乎没有......但也许其他人比我更了解内部工作原理。
顺便说一句,潜在的问题是我有 shape 的张量(n_batch, channel, x, y, 1)
。我想用一个简单的函数删除最后一个维度,这样我最终会得到一个(n_batch, channel, x, y)
.
重塑当然是可能的,甚至可以选择最后一个轴。但我想将此功能嵌入到一个层中,以便我可以轻松地将它添加到一个ModuleList
或Sequence
对象中。
编辑:刚刚发现对于 Tensorflow (2.5.0) 函数tf.linalg.diag
确实尊重批次维度。仅供参考,您使用的每个功能可能会有所不同