我遵循,但有一个关于将numpy数组转换为张量的问题。教程示例。
这段代码:
import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
np.add(a, 1, out=a)
print(a)
print(b)
收益率
2.2.2.2。
张量(2,2,2,2,2,dtype=torch.float64)
然而,
import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
a = a + 1 #the diff is here
print(a)
print(b)
收益率
所以我有一个训练集和一个测试集,两者都是h5py格式的。我还有一个data_load函数,它加载文件并返回NumPy数组。主要的问题是我不需要NumPy,因为我使用的是张量。我期望有一个x&y张量的大小N(批大小)和D_in(每个图像的输入大小)和D_out(每个张量的输出大小)。
问题是:
x&y不被转换成below.If提到的维度的张量,它们的类型仍然是numpy.ndarray。任何帮助都是非常感谢的。
def load_data(train_file, test_file):
# Load the training data
train_dataset =h5py.F
我有个Numpy张量器 X = np.arange(64).reshape((4,4,4)) 我想要获取这个张量的第一维的2,3,4项,你可以这样做, Y = X[[1,2,3],:,:] 这是不是比显式地写出索引1,2,3更简单的方式呢?我尝试了像1,:这样的东西,它给我一个错误。 上下文:对于我的实际应用程序,张量的形状类似于(30000,100,100)。我想抓住这个张量的最后一个(10000,100,100)到(30000,100,100)。
我试图索引到张量中,从一维张量中得到一个切片或单个元素。我发现,当使用numpy方法索引[:]和slice vs tf.gather时,性能差异很大(几乎30%-40% )。
此外,我还观察到,tf.gather在标量(在未堆叠的张量上循环)上使用的开销很大,而不是张量。这是众所周知的问题吗?
示例代码(效率低下):
for node_idxs in graph.nodes():
node_indice_list = tf.unstack(node_idxs)
result = []
for nodeid in node_indices_list:
x
我正在寻找一种使用torch函数选择PyTorch张量区域的方法(不使用numpy)。你对如何进行有建议吗?
换句话说,我在寻找一种裁剪矩阵区域的方法。使用numpy,就像
import numpy as np
A = np.random.rand(16,16)
B = A[0:8, 0:8]
我尝试的方法如下:
from torchvision import transforms
A = torch.randn([1,3,64,64])
B = torch.split(A, [16,32,16], dim =2)
C = torch.split(B, [16,32,16], dim =3)
因此,假设我有一个k-dim张量和一个1-dim掩码,它在pytorch中用于可变长度序列,并且我想返回一个张量,它表示掩码中直到第一个false值的元素。下面是一个示例: import torch
a = torch.tensor([[1,2],[3,4],[5,6],[0,0],[0,0],[0,0]])
b = torch.tensor([True,True,True,False,False,False])
# magic goes here, result of c should be:
print(c)
>>> [[1,2],[3,4],[5,6]] 在本例
我已经学会了如何在一维上分割张量。
我已经学习了如何切片一个2D张量,给出一个特定值的一维张量。
两者都使用tf.gather(),但我很确定我需要tf.gather_nd(),尽管我使用它显然是错误的。
在numpy中,我有一个5x52D数组,我可以使用带有行和列索引的np.ix_()对2x2数组进行切片(对于行和列,我总是需要相同的索引,从而得到一个平方矩阵):
import numpy as np
a = np.array([[1,2,3,4,5],[2,1,6,7,8],[3,6,1,9,10],[4,7,9,1,11],[5,8,10,11,1]])
a
阵列([ 1,2,3,4
我正在尝试将张量对象中的一个矩阵切片为numpy矩阵,并将其用于部分计算。但是从张量对象到numpy数组的赋值不会像下面这样工作。
import tensorflow as tf
import numpy as np
def assignC():
C_copy = np.zeros((2,2))
C = tf.matmul(tf.transpose(x), x)
C_copy[0,0] = C[0,0]
#C_copy[0,0] = C[0,0].eval() # error saying "You must feed a value for pla
我正在优化反向传播算法的实现,以训练一个神经网络。我正在研究的一个方面是,将数据点集(输入/输出向量)上的矩阵操作作为由numpy库优化的批处理过程来执行,而不是遍历每个数据池。
在我最初的算法中,我做了以下工作:
for datapoint in datapoints:
A = ... (created out of datapoint info)
B = ... (created out of datapoint info)
C = np.dot(A,B.transpose())
____________________
A: (7,1) numpy array
B: (6
我正在尝试用Tensorflow重写下面的Python代码。但是,我在使用tf.map_fn迭代张量时遇到了问题。
这里depth是形状[batch_size,256,256]的张量,normal是形状[batch_size,256,256,3]的张量,scale是形状[batch_size,256,256]的张量。
for b in range(0,batch_size):
depth[b,:,:] = [scale[b,0,0] + (scale[b,0,1] - scale[b,0,0])* x for x in depth[b,:,:]]
normal[b,:,:,:]
我试图计算我的模型的损失相对于它的输入的梯度,以便创建一个对抗性的例子。由于模型的输入是不可训练的,所以我需要计算关于张量的梯度,而不是变量。但是,如果张量不是可训练变量,则TensorFlow的GradientTape返回None梯度:
import numpy as np
import tensorflow as tf
tf.enable_eager_execution()
a = tf.convert_to_tensor(np.array([1., 2., 3.]), dtype=tf.float32)
b = tf.constant([1., 2., 3.])
c = tf.Var
我定义了一个简单的conv2d函数来计算输入和内核(都是2D张量)之间的相互关系,如下所示:
import torch
def conv2D(X, K):
h = K.shape[0]
w = K.shape[1]
ĥ = X.shape[0] - h + 1
ŵ = X.shape[1] - w + 1
Y = torch.zeros((ĥ, ŵ))
for i in range (ĥ):
for j in range (ŵ):
Y[i, j] = (X[i: i+h, j: j+w]*K).sum
我想使用Rust的库对张量(多维数组)进行切片,但问题是张量是动态形成的,切片存储在用户提供的变量中。
如果我预先知道维度,我希望我可以简单地执行以下操作,其中idx是用户提供的索引,x是4维张量:
// should give a 1D tensor as a view on the last axis at index `idx`
x.slice(s![idx[0], idx[1], idx[2], ..])
但是因为我不知道前面的维数,所以我不能用这种方式手动解压idx并将其提供给切片宏s!。
在python中,我可能会使用,其中idx是用户提供的元组:
# if `len(idx)