ランダムな並び替え
np.random.permutation(10)
番号を並び替えて、先頭から適当な数だけサンプリングする。
array([7, 2, 6, 0, 5, 4, 9, 1, 3, 8])
reshapeについて
x_test[0].reshape(28,28)
リストで区切られるようになる。
plt.imshow(x_test[0].reshape(28,28))
plt.show()
→こうすることで初めて画像と認識できるようになる。
plt.imshow(x_test[0],reshape(28,-1))
片方を28に固定して、それに合うように割り振る。
np.argmax()
In [1]: import numpy as np
In [2]: a = np.random.randint(10, size = 10) # まずは1次元配列から。
In [3]: a # aの値を確認する。
Out[3]: array([2, 3, 3, 1, 4, 4, 5, 0, 5, 4])
In [4]: np.argmax(a)
Out[4]: 6
In [5]: a.argmax()
Out[5]: 6
この例では、ランダムで生成した配列の中身が[2, 3, 3, 1, 4, 4, 5, 0, 5, 4]
となっています。最大値は5
ですが、インデックスは6と8の二回出現します。こういった場合には、最初の最大値のインデックスを返します。0からスタートします。
np.eye()
In [1]: import numpy as np
In [2]: np.eye(3) # 3×3の単位行列
Out[2]:
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]])
In [3]: np.eye(10)
Out[3]:
array([[ 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 1., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 1., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.]])
単位行列を生成する。
np.astype()
t_train = np.eye(10)[t_train.astype("int")]
print(t_train[1])
[1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
このようにして、正解ラベルをone-hot-vectorに変換します
print('Label: ', np.argmax(t_test[perm[i]]))
こうすることで、何番目にマックスが来るか表示して、数字の正解を表示します。
np.zeros_like
import numpy as np
x = np.arange(9).reshape(3, 3)
x
array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
# 配列 x の要素を0で初期化した新しい配列を生成
np.zeros_like(x)
array([[0, 0, 0], [0, 0, 0], [0, 0, 0]])
コメント