argmax

Numpy index of the maximum with reduction - numpy.argmax.reduceat

给你一囗甜甜゛ 提交于 2021-02-16 18:43:33
问题 I have a flat array b : a = numpy.array([0, 1, 1, 2, 3, 1, 2]) And an array c of indices marking the start of each "chunk": b = numpy.array([0, 4]) I know I can find the maximum in each "chunk" using a reduction: m = numpy.maximum.reduceat(a,b) >>> array([2, 3], dtype=int32) But... Is there a way to find the index of the maximum <edit> within a chunk </edit> (like numpy.argmax ), with vectorized operations (no lists, loops)? 回答1: Borrowing the idea from this post. Steps involved : Offset all

How to find argmax of last 2 axes

微笑、不失礼 提交于 2020-06-16 17:25:12
问题 Hey I have seen this question - Numpy: argmax over multiple axes without loop but the output is not the shape I desire. So for example, if I give the function an array of dimension: 10x20x12x12x2x2, it will output an array of dimension: 10x20x12x12, which values are the indices 回答1: Make a simpler, but I think still relevant array: In [268]: arr = np.random.randint(0,20,(4,1,3,2)) In [269]: arr Out[269]: array([[[[16, 1], [13, 17], [19, 0]]], [[[ 2, 13], [12, 9], [ 6, 6]]], [[[13, 2], [18, 10

numpy: what is the logic of the argmin() and argmax() functions?

走远了吗. 提交于 2020-06-09 07:54:48
问题 I can not understand the output of argmax and argmin when use with the axis parameter. For example: >>> a = np.array([[1,2,4,7], [9,88,6,45], [9,76,3,4]]) >>> a array([[ 1, 2, 4, 7], [ 9, 88, 6, 45], [ 9, 76, 3, 4]]) >>> a.shape (3, 4) >>> a.size 12 >>> np.argmax(a) 5 >>> np.argmax(a,axis=0) array([1, 1, 1, 1]) >>> np.argmax(a,axis=1) array([3, 1, 1]) >>> np.argmin(a) 0 >>> np.argmin(a,axis=0) array([0, 0, 2, 2]) >>> np.argmin(a,axis=1) array([0, 2, 2]) As you can see, the maximum value is

Numpy: argmax over multiple axes without loop

我只是一个虾纸丫 提交于 2020-06-07 04:33:16
问题 I have a N-dimensional array (Named A). For each row of the first axis of A, I want to obtain the coordinates of the maximum value along the other axes of A. Then I would return a 2-dimensional array with the coordinates of the maximum value for each row of the first axis of A. I already solved my problem using a loop, but I was wondering whether there is a more efficient way of doing this. My current solution (for an example array A) is as follows: import numpy as np A=np.reshape(np

Numpy: argmax over multiple axes without loop

点点圈 提交于 2020-06-07 04:33:14
问题 I have a N-dimensional array (Named A). For each row of the first axis of A, I want to obtain the coordinates of the maximum value along the other axes of A. Then I would return a 2-dimensional array with the coordinates of the maximum value for each row of the first axis of A. I already solved my problem using a loop, but I was wondering whether there is a more efficient way of doing this. My current solution (for an example array A) is as follows: import numpy as np A=np.reshape(np

GAN(对抗生成网络)的数学原理及基本算法

烈酒焚心 提交于 2020-03-16 20:15:57
GAN在生成任务上与其他方法对比 Machine Learning (ML) 本质上是寻找一个函数 f : X → Y f:X\to Y f : X → Y ,通过网络来近似这个函数。 Structured Learning (SL) 输出相对于ML更加复杂,可能是图、树、序列……通常ML的问题,每个类别都会有一些样本,但是SL则不会——输出可能是输入从来没见过的东西。 在 GAN 之前, auto-encoder (AE) 非常常用。AE结构:输入 → \to → encoder → \to → vector c → \to → decoder → \to → 输出。训练的时候要使得输入输出尽可能相近。当做生成任务的时候,截取AE的decoder部分,随机给vector c,输出即生成的结果。所以可见AE可以用于做生成——即将decoder输出视为生成信息。但是这种训练方式面对一个问题,假设A、B都是训练集信息,针对A、B网络能够很好的进行生成,但是当面对 0.5 A + 0.5 B 0.5A+0.5B 0 . 5 A + 0 . 5 B 网络将会不知道输出应该是什么(最大的可能是两个图像的堆叠)。 对AE的改进叫做 variational-AE (VAE) 在之前模型结构的基础上,对输入加上了噪声,其余不变。这种操作能够让模型能加稳定。 VAE同样有一个问题

axis理解

☆樱花仙子☆ 提交于 2020-03-04 00:49:49
目录 1. Axis的数量即为数据的维度 2. 从内到外"扒开"张量 3. 列几个对axis进行操作的tensorflow op,加深印象(argmax/gather) 1. Axis的数量即为数据的维度 axis(轴,维度) 在数学和物理中,维度通常被解释为空间中描述一个位置所需的最少坐标个数(基底的位数)。 然而在 numpy 中 axis 的个数就是数据的维度,体现在具体数据上就是 括号的层数 。 [[1, 2, 3], [2, 3, 4], [5, 4, 3], [8, 7, 2]] —— axis=2,二维Tensor 可以认为有多少个"["维度就为几,“轴”是从外向里的,axis从外层到内层依次增大(0,1…) 2. 从内到外"扒开"张量 input = [ [[1,2,3,4], [2,3,4,1]], [[1,2,9,4], [2,0,6,1]], [[1,0,3,4], [2,3,5,1]], ] # 3x2x4 axis = 0 : 沿着axis=0,划分出单个元素,就是最外层中括号括住的元素 元素个数:3,每个元素的shape=2x4,如下: [[1,2,3,4], [2,3,4,1]] / [[1,2,9,4], [2,0,6,1]] / [[1,0,3,4], [2,3,5,1]] axis = 1: 单个元素为中间层的中括号包围的元素

NumPy——统计函数

陌路散爱 提交于 2020-03-03 23:59:22
引入模块 import numpy as np 1. numpy.sum(a, axis=None) / a.sum(axis=None) 根据给定轴 axis 计算数组 a 相关元素之和, axis 整数或元组,不指定轴则默认求全部元素之和。 若 a 的 shape 为 (d0,d1,..,dn) ,当 axis=(m1,m2,...mi) 时,返回结果应是一个 shape 为 (d0,d1,...,dn)-(dm1,dm2,...dmi) ,每个元素是轴 m1,m2,...mi 上元素之和 例: a = np.arange(24).reshape((2, 3, 4)) print("数组a:\n", a) print("np.sum(a):", np.sum(a)) # 全部元素和 print("np.sum(a, axis=0):\n", np.sum(a, axis=0)) # 第0轴(最外围)的元素和 print("np.sum(a, axis=1):\n", np.sum(a, axis=1)) # 第1轴元素和 print("np.sum(a, axis=(0, 1)):\n", np.sum(a, axis=(0, 1))) # 第0轴和第1轴元素之和 print("np.sum(a, axis=(0, 2)):\n", np.sum(a, axis=(0, 2))

pytorch之expand,gather,squeeze,sum,contiguous,softmax,max,argmax

寵の児 提交于 2020-03-01 05:48:02
目录 gather squeeze expand sum contiguous softmax max argmax gather torch.gather(input,dim,index,out=None)。对指定维进行索引。比如4*3的张量,对dim=1进行索引,那么index的取值范围就是0~2. input是一个张量,index是索引张量。input和index的size要么全部维度都相同,要么指定的dim那一维度值不同。输出为和index大小相同的张量。 import torch a=torch.tensor([[.1,.2,.3], [1.1,1.2,1.3], [2.1,2.2,2.3], [3.1,3.2,3.3]]) b=torch.LongTensor([[1,2,1], [2,2,2], [2,2,2], [1,1,0]]) b=b.view(4,3) print(a.gather(1,b)) print(a.gather(0,b)) c=torch.LongTensor([1,2,0,1]) c=c.view(4,1) print(a.gather(1,c)) 输出: tensor([[ 0.2000, 0.3000, 0.2000], [ 1.3000, 1.3000, 1.3000], [ 2.3000, 2.3000, 2.3000], [ 3

Tensorflow学习实战之mnist手写体识别

三世轮回 提交于 2020-02-19 07:10:32
Tensorflow学习实战之mnist手写体识别 数据准备 构建模型 训练模型 评估结果 可视化显示 Tensorflow继续学习,今天是入门级的mnist手写体识别,改变前两次的线性回归,这次是逻辑回归,这样随之改变的是损失函数等 Tensorflow里面有一个examples的MNIST的手写,直接运行会自动下载。 训练了20次,效果还不错,慢慢的理解,把以前不懂得好多东西,学习中慢慢得到补充 收获: reshape,行优先,逐行排列,相当于把一整行数字排列后按reshape得行列填充进去,我的理解相当于图像里得resize one hot独热编码,一个为1,其余所有为0,适用于分类任务,是一种稀疏向量,扩展到欧氏空间更适用于分类任务,使用one-hot得优势很明显,1-3和8-3,更相似于3,如果不使用one-hot而直接使用1-9编码,1-3更加相似,不符合 通过argmax可以把独热编码中得最大值取出来,即把标签得出 训练-》验证,验证通过后,到最后用测试集进行测试 Sigmod函数更适应于逻辑回归 Softmax函数可以延伸至多分类,但多分类相加为1 损失函数使用的是交叉熵,相当于两个概率分布之间的距离 先上图结果图: 数据准备 import tensorflow as tf import matplotlib . pyplot as plt import numpy