学习神经网络-mini-batch

1.numpy的切片
X[m,n],表示X的第m维中的第n段数据。
也可以按切片写法:
X[m:n,k:v],第一维从m到n-1,第二维取从k到v-1
X[:,n],表示第一维的m全部取,第二维取第n段数据,如果是矩阵,就是取第n列。
X[:,list],第二维按照list里面的数字索引取

import numpy as np np.random.seed(1) X = np.random.randn(5,3) print(X)

X是5行3列矩阵,结果:
[[ 1.62434536 -0.61175641 -0.52817175] [-1.072968620.86540763 -2.3015387 ] [ 1.74481176 -0.76120690.3190391 ] [-0.249370381.46210794 -2.06014071] [-0.3224172-0.384054351.13376944]]

随机得到一个列表:
np.random.seed(1) permutation = list(np.random.permutation(3)) print(permutation)

【学习神经网络-mini-batch】permutation列表是:
[0, 2, 1]
按X[:,list]方式来取数据,也就是第一维全部取,第二维按照list的索引来取:
shuffed_X = X[:,permutation] print(shuffed_X)

结果是:
[[ 1.62434536 -0.52817175 -0.61175641] [-1.07296862 -2.30153870.86540763] [ 1.744811760.3190391-0.7612069 ] [-0.24937038 -2.060140711.46210794] [-0.32241721.13376944 -0.38405435]]

因为这里list其实是从0-2的,其维度与n一样,实际上就是随机地把列进行打乱。

    推荐阅读