1. 排序的mask获取


应用场景:KNN中给定dataset X, Y, 在X中寻找dist最小的那几个的index然后到Y中去获取label。

Given a 2D matrix: data = np.array([[3,1],[2,4]])

  1. 排序

    • 直接 np.sort(data, axis = none) generate a 1D array [1,2,3,4],
    • np.sort if assign axis, e.g. np.sort(data, axis=0) will generate a SAME DIMENSION matrix sorted in given axis. e.g [[2,1],[3,4]] —same holds for HIGH DIMENSION.
  2. 排序,但要求顺序给出index .e.g. 1D matrix x=np.array([2,1,3]), 要给出index ordered_mast = [1,0,2] so x[ordered_mask] = [1,2,3].

    • Use np.argsort(x) https://docs.scipy.org/doc/numpy/reference/generated/numpy.argsort.ht

  • 尤其有用的是index=None的情况:注意用np.unravel_index()来把1Dindex还原成2D!!!

###2. BroadCasting

  • numpy broadcasting真是tricky!
  • 定义用来match different-dim matrix https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html
    详见作业KNN的一道题[给定m*D的training set,给定n*D的testing set, 要求两个set的distance矩阵 dists[I][j] = dist(X_test[I], X_train[j])
    非常类似 stackoverflow的一个问题https://stackoverflow.com/questions/32856726/memory-efficient-l2-norm-using-python-broadcasting

我看完后想到的是

diff = X_test.reshape((n, 1, D)) - X_train.reshape((1, m, D)) #
dists = np.sqrt(np.sum(diff ** 2, axis = 2))

错是没错,但是太慢—比two loops还慢,而且还占内存,因为中间有一步:

(n, 1, D) - (1, m ,D) => (n, m, D)

有一个(n,m,D)的超大矩阵。

Stackoverflow给出了一个好方法把 X_train 和 X_test先解耦:
(X-Y) ^2 = X^2 + Y^2 - 2XY 其实

  1. dist(X_test[I], X_train[j])的计算不用真的做X_test[i]-X_train[j],
  2. |X_test[I]| 是可以复用的。
    m = self.X_train.shape[0]n = X.shape[0]Xtrain2 = np.sum(self.X_train**2, axis=1).reshape((m, 1)) # (m*1)X2 = np.sum(X**2, axis = 1).reshape((n,1)) # (n*1)X_Xtrain = X.dot(self.X_train.T)  # (n*m)dists = np.sqrt(X2 - 2*X_Xtrain +Xtrain2.T)

或者

###3. K-fold cross validation
Here we do K-fold cross validation manually

3.1 用np.split_array(numOfFolds) 来划分folds


numpy Boolean array可以和一般array做运算!False当作0,true当作1

Numpy tricks相关推荐

  1. numpy tricks(二)—— 删除多维数组的行或列

    numpy.delete numpy 下的多维数组,如果要删除其中的某些行,或某些列,不可以用置空的方式,进行设置: A[1, :] = None, ⇒ 会将 A 中的第一行数据全部置为 Nan 1. ...

  2. numpy tricks(一)—— 多维数组的阈值化处理

    所谓多维数组的阈值化处理,比如将矩阵中小于某阈值的元素全部置零. >> A = np.random.randn(3, 4) array([[-2.05480015, 1.02727696, ...

  3. 提高 GPU 训练利用率的Tricks

    前言 首先,如果你现在还是在进行session.run(..)的话!尤其是苦恼于GPU显存都塞满了利用率却上不去的童鞋,这篇文章或许可以给你打开新世界的大门噢 如果发现经过一系列改良后训练效率大大提高 ...

  4. 从39个kaggle竞赛中总结出来的图像分割的Tips和Tricks(附资源)

    来源:AI公园 本文约2700字,建议阅读10分钟 本文与你分享参加了39个Kaggle比赛的技巧和经验. 想象一下,如果你能得到所有的tips和tricks,你需要去参加一个Kaggle比赛.我已经 ...

  5. 11 Python Pandas tricks that make your work more efficient

    Pandas is a widely used Python package for structured data. There're many nice tutorials of it, but ...

  6. tensorflow gpu利用率为0_训练效率低?GPU利用率上不去?快来看看别人家的tricks吧...

    前言 首先,如果你现在已经很熟悉tf.data+estimator了,可以把文章x掉了╮( ̄▽ ̄"")╭ 但是!如果现在还是在进行session.run(..)的话!尤其是苦恼于G ...

  7. 跑python gpu利用率低_训练效率低?GPU利用率上不去?快来看看别人家的tricks吧~...

    前言 首先,如果你现在已经很熟悉tf.data+estimator了,可以把文章x掉了╮( ̄▽ ̄"")╭ 但是!如果现在还是在进行session.run(..)的话!尤其是苦恼于G ...

  8. 使用NumPy优于Python列表的优势

    In this article, I will show a few neat tricks that come with NumPy, yet are must faster than vanill ...

  9. 训练效率低?GPU利用率上不去?快来看看别人家的tricks吧~

    前言 首先,如果你现在已经很熟悉tf.data+estimator了,可以把文章x掉了╮( ̄▽ ̄"")╭ 但是!如果现在还是在进行session.run(..)的话!尤其是苦恼于G ...

  10. 史上最全提升GPU的tricks合集

    前言 首先,如果你现在已经很熟悉tf.data+estimator了,可以把文章x掉了╮( ̄▽ ̄"")╭ 但是!如果现在还是在进行session.run(..)的话!尤其是苦恼于G ...

最新文章

  1. mysql delete and or_Mysql delete操作
  2. j90度度复数运算_看得懂的复数
  3. android模拟器插件,Android模拟器插件找不到android SDK
  4. Linux 系统应用编程——网络编程(高级篇)
  5. php width,PHP imagefontwidth()用法及代码示例
  6. mysql多实例和主从区别_mysql多实例的安装以及主从复制配置
  7. 人生小故事,看完后想十秒钟,你会获益匪浅
  8. mysql 51.数据库下载_Database Master官方下载_MySQL/SQLite数据库管理软件V5.2.51.18513下载(暂未上线)_预约_飞翔下载...
  9. APP、软件版本号的命名规范与原则
  10. 计算机组成原理4位快速加法器
  11. SQL基础【一.DQL 数据查询语言】
  12. [美] 尼古拉斯·卡尔 《浅薄:互联网如何毒化了我们的大脑 》
  13. 电脑键盘equals在哪个位置_常用标点符号和电脑键盘符号英语表示 -
  14. log4j2配置详情
  15. 放大电路不同频段耦合电容、旁路电容、极间电容和分布电容的分析方法
  16. MATLAB | 绘制复指数函数 y = exp(j*w*n)的三维图像
  17. 蜡烛图(K线图)-1简介
  18. Maven-使用私服的好处
  19. VC++ 利用Opencv 做的一个发票识别程序,识别有误
  20. 电脑开机自动修复,磁盘错误问题解决

热门文章

  1. 焦距相关的基本概念及焦距对摄影效果的影响
  2. 创建你的战略型人际网络
  3. 实习日记 08/23 day33 理解JVM---Java核心卷中的并发
  4. STM32L476入坑-1
  5. 联想服务器安装系统鼠标失灵,ThinkPad自行安装操作系统后键盘鼠标失灵怎么办...
  6. IDEA提高运行速度
  7. Sphinx速成指南
  8. matlab 切点投资组合 程序,MATLAB证券投资组合分析
  9. 5分钟了解Pandas的透视表
  10. c语言计算标准体重作业,c语言/* 已知成人标准体重粗算公式: