草庐IT

python - 来自密集张量的稀疏张量(矩阵) Tensorflow

我正在创建一个卷积稀疏自动编码器,我需要将一个充满值的4D矩阵(其形状为[samples,N,N,D])转换为一个稀疏矩阵。对于每个样本,我都有DNxN特征图。我想将每个NxN特征图转换为稀疏矩阵,其中最大值映射到1,所有其他值映射到0。我不想在运行时执行此操作,而是在图形声明期间执行此操作(因为我需要使用生成的稀疏矩阵作为其他图形操作的输入),但我不明白如何获取索引来构建稀疏矩阵。 最佳答案 您可以使用tf.where和tf.gather_nd来做到这一点:importnumpyasnpimporttensorflowastf#M

python - PyTorch:如何将张量的形状作为 int 列表

在numpy中,V.shape给出了V维度的整数元组。在tensorflowV.get_shape().as_list()中给出了V维度的整数列表。在pytorch中,V.size()给出了一个size对象,但是如何将它转换为ints呢? 最佳答案 对于PyTorchv1.0及可能更高版本:>>>importtorch>>>var=torch.tensor([[1,0],[0,1]])#Using.sizefunction,returnsatorch.Sizeobject.>>>var.size()torch.Size([2,2])

python - 列/行切片 torch 稀疏张量

我有一个pytorch稀疏张量,我需要使用此切片[idx][:,idx]对行/列进行切片,其中idx是索引列表,使用提到的切片在普通浮点张量上产生我想要的结果。是否可以在稀疏张量上应用相同的切片?这里的例子:#constructingsparsematrixi=np.array([[0,1,2,2],[0,1,2,1]])v=np.ones(4)i=torch.from_numpy(i.astype("int64"))v=torch.from_numpy(v.astype("float32"))test1=torch.sparse.FloatTensor(i,v)#constructi

python - 解释张量板图

我还是新手tensorflow当我的模型训练继续时,我试图了解正在发生的细节。简而言之,我正在使用slim在ImageNet上预训练的模型做finetuning在我的数据集上。以下是从tensorboard中为2个独立模型提取的一些图:Model_1(InceptionResnet_V2)Model_2(InceptionV4)到目前为止,这两个模型在验证集上的结果都很差(Model_1的平均Az(ROC曲线下的面积)=0.7,Model_2的平均值为0.79)。我对这些图的解释是权重在小批量中没有变化。只有偏差会随着小批量而改变,这可能是问题所在。但我不知道去哪里验证这一点。这是我能

python - 如何计算两个张量之间的余弦相似度?

我有两个归一化张量,我需要计算这些张量之间的余弦相似度。我如何使用TensorFlow做到这一点?cosine(normalize_a,normalize_b)a=tf.placeholder(tf.float32,shape=[None],name="input_placeholder_a")b=tf.placeholder(tf.float32,shape=[None],name="input_placeholder_b")normalize_a=tf.nn.l2_normalize(a,0)normalize_b=tf.nn.l2_normalize(b,0)

python - Tensorflow 张量 reshape 并用零填充

有没有办法reshape张量并用零填充任何溢出?我知道ndarray.reshape会这样做,但据我了解,将Tensor转换为ndarray需要在GPU和CPU之间来回切换。Tensorflow的reshape()文档说TensorShapes需要有相同数量的元素,所以也许最好的方法是pad()然后reshape()?我正在努力实现:a=tf.Tensor([[1,2],[3,4]])tf.reshape(a,[2,3])a=>[[1,2,3],[4,0,0]] 最佳答案 据我所知,没有内置运算符可以执行此操作(如果形状不匹配,tf

python - 如何在不增加尺寸的情况下为张量应用外积?

我有两个向量v和w我想用它们制作一个矩阵m这样:m[i,j]=v[i]*w[j]换句话说,我想计算它们的外积。我可以通过使用theano.tensor.outer或向v和v添加新索引并使用dot产品。m=T.dot(v[:,numpy.newaxis],w[numpy.newaxis,:])现在,我尝试解决一个更一般的问题。我有两个矩阵(我再次称它们为v和w),而不是两个向量v和w想计算矩阵v的每一行与矩阵w的对应行的外积(第一个矩阵中的第i_th行应乘以矩阵的第i_th行第二个矩阵)。所以,我想做这样的事情:m1=T.tensordot(v[:,:,numpy.newaxis],w[

python - 在张量分解后重新组合张量

我正在尝试使用python库分解3D矩阵scikit-tensor.我设法将张量(尺寸为100x50x5)分解为三个矩阵。我的问题是如何使用张量分解产生的分解矩阵再次组合初始矩阵?我想检查分解是否有任何意义。我的代码如下:importloggingfromscipy.io.matlabimportloadmatfromsktensorimportdtensor,cp_alsimportnumpyasnp//SetloggingtoDEBUGtoseeCP-ALSinformationlogging.basicConfig(level=logging.DEBUG)T=np.ones((4

python - PyTorch 的张量是如何实现的?

我正在用Rust构建我自己的Tensor类,我试图让它像PyTorch的实现一样。以编程方式存储张量的最有效方法是什么,但是,特别是在像Rust这样的强类型语言中?是否有任何资源可以很好地了解这是如何完成的?我目前正在构建一个连续的数组,因此,给定3x3x3的维度,我的数组中将只有3^3元素,这将代表张量。但是,这确实会使数组的一些数学运算和操作变得更加困难。张量的维度应该是动态的,这样我就可以得到一个n维度的张量。 最佳答案 连续数组存储此类数据的常用方法是在单个数组中,该数组在内存中布置为单个连续block。更具体地说,一个3x

python - Numpy:将矩阵与 3d 张量相乘——建议

我有一个形状为MxN的矩阵P和一个形状为KxNxR的3d张量T。我想将P与T中的每个NxR矩阵相乘,得到KxMxR3d张量。P.dot(T).transpose(1,0,2)给出了想要的结果。这个问题有没有更好的解决方案(即摆脱transpose)?这一定是一个很常见的操作,所以我认为,其他人已经找到了不同的方法,例如使用tensordot(我试过但没能得到想要的结果)。意见/观点将不胜感激! 最佳答案 scipy.tensordot(P,T,axes=[1,1]).swapaxes(0,1)