当你将熊猫系列作为参数传递给np.matmul时,我注意到了不同的Numpy版本之间的不一致。
在带有Numpy版本1.16.4的Python 3.6中
>>> import numpy as np
>>> import pandas as pd
>>> a = np.array(range(9)).reshape((3, 3))
>>> b = np.array([2]*3)
>>> np.matmul(b, a)
在tensorflow中,我有以下问题。
我有一个张量m的形状batch_size,dim_a,dim_b和一个矩阵u的形状batch_size,dim_b。
M = tf.constant(shape=[batch_size, sequence_size, embed_dim])
U = tf.constant(shape=[batch_size, embed_dim])
我要实现的是i、dim_a、dim_b x i、dim_b对我的批处理的每个索引的点积。
P[i] = tf.matmul(M[i, :, :], tf.expand_dims(U[i, :], 1)) for each
我对张量代数不太熟悉,我很难理解如何让numpy.tensordot做我想做的事。
我使用的示例很简单:给定一个带有形状(2,2,3)的张量(2,2,3)和另一个具有形状(2,1,3)的b,我想要一个具有shape (2,1)的结果张量c。此张量将是以下等效python代码的结果:
n = a.shape[2]
c = np.zeros((2,n))
for k in range(n):
c += a[:,:,k]*b[:,:,k]
文档中说,可选参数axes
如果是int N,则a的最后N轴与b的第一N轴之和。对应轴的大小必须匹配。
但我不明白这里需要哪一个“轴”(此外,当轴
我一直在尝试用RL来制作21点的人工智能。现在我试图建立两个独立的网络,这是DQN的一种方式。我搜索了网络,找到了一些方法,并试图使用它,但失败了。
发生了此错误:
TypeError:不允许使用tf.Tensor作为bool。使用if t is not None:而不是if t:来测试是否定义了张量,并使用TensorFlow操作(如tf.cond )执行以张量值为条件的子图。
代码:
import gym
import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
def one_hot(x
我有一段tensorflow代码,它使用control_flow_ops.cond来选择要使用的结果:
import tensorflow as tf
import numpy as np
from tensorflow.python.ops import control_flow_ops
from tensorflow.python.ops import math_ops
from tensorflow.python.client import timeline
import time
with tf.device('/cpu:0'):
a_arr = []
我有一个8x8x25000数组W和一个8x25000数组r,我想用r的每一列(8x1)乘以每一个8x8个W片,并将结果保存在Wres中,这最终将是一个8x25000矩阵。
我使用这样的for循环来完成这个任务:
for i in range(0,25000):
Wres[:,i] = np.matmul(W[:,:,i],res[:,i])
但这是缓慢的,我希望有一个更快的方法来实现这一点。
有什么想法吗?
我正在实现逆幂方法来寻找一个矩阵$A$ (n x n matrix.Given )和一个具有shape: (len(A),)的np.array的向量的最大特征值:该实现的一个步骤涉及计算这个值: $q =x^税金$ 问题是,我不知道我是否以正确的方式实现了这一点: q = x.transpose() @ A @ x 有没有更好的方法来计算呢?
import numpy as np
v = np.zeros((3,10000), dtype=np.float32)
mat = np.zeros((10000,10000000), dtype=np.int8)
w = np.matmul(v, mat)
收益率
Traceback (most recent call last):
File "int_mul_test.py", line 6, in <module>
w = np.matmul(v, mat)
numpy.core._exceptions.MemoryError: Unable
我希望这个问题听起来不会很奇怪。我将用Python写一个代码来模拟波导中的一些光学非线性,我想知道什么是我可以用来节省时间和精力的最有效的符号。我来自MatLab背景,每个人都告诉你矩阵比循环高效得多,但现在,大多数时候,我使用张量表示法(例如,在FORTRAN语言中,矩阵乘法将得到类似于that的结果 subroutine aa_dot_bb(n,a,b,c)
dimension a(n,n), b(n,n), c(n,n)
do i = 1,n
do j = 1,n
c(i,j) = 0
do k = 1,n
c(i
如何沿着三维数组的轴应用在2D数组( can )上的函数?
我试过使用numpy.apply_along_axis,但我需要对2D数组进行操作,而不是在1D上操作。我通过沿着一个轴迭代得到了我需要的结果,但如果可能的话,我更希望它是矢量化的:
from scipy import spatial
import numpy as np
a = np.random.randn(600).reshape(10, 20, 3)
distances = np.array([spatial.distance.cdist(a[i,:,:], a[i,:,:]) for i in range(a.shape[
我有一个点数组的列表,当我迭代它时,我想做就地矩阵乘法,也就是说,我希望结果存储在同一个矩阵中。
该守则实质上是:
for p in p_list:
# R is a 3x3 matrix
p[:,:] = np.matmul(R,p)
这段代码没有显示错误,但是结果是不正确的,就好像乘法是在数组中执行的,并且被计算出来的一样,所以它创建了一个错误的输出矩阵。移除:,给出一个正确的乘法。
1)为什么会发生这种情况? 2)我使用的主要原因是::确保结果存储在列表p_list中。是否有正确的方法来做到这一点(不使用中间变量)?
? 梯度的更新不知何故是错误的。 我已经实现了下面给定的算法。我做错了什么 ? '''
Implementation of PALM- proximal alternating linearisation method
'''
def palm(X,m,niter,lamda):
X = X.T
l = X.shape[0]
n = X.shape[1]
W = np.random.rand(m,n)
D = np.random.rand(l,m)
for i in range(nit
我想使用一个简单的1D测试函数的高斯过程近似来说明一些事情。我想迭代相关矩阵的几个不同的值(因为这是1D的,它只是一个值),并显示不同的值对近似值有什么影响。我的理解是,"theta“是这个的参数。因此,我希望手动设置theta值,并且不希望对其进行任何优化/更改。我认为常量内核和clone_with_theta函数可能会得到我想要的东西,但我没有让它工作。这是我到目前为止所知道的: import numpy as np
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussia