Numpy自身が独熱符号化one-hotを実現
1358 ワード
独熱符号化についての紹介参考:ここで
numpyを使用して独自の熱符号化を実現する方法を以下に示します.
上のコードではflatとravelの2つの関数を使用しています.マトリクスの平坦化については、次の方法を選択できます.
numpyのravel()、flat()、flatten()、squeeze()、reshape()には、多次元配列を1次元配列に変換する機能があります.ravel():必要がなければ、ソースデータのコピーは生成されません.同じデータ空間flatten()を指します.ソースデータのコピーを返し、新しいメモリ空間を返します.
flat:反復オブジェクトを返します.このオブジェクトとインデックスで対応する1次元にフラット化された値を取得し、squeeze()の変更をサポートします.次元数が1の次元のみ次元を下げます.
またreshape(-1)は多次元配列を「平らにする」こともできる
上記の違いにより、上記のコード実装ではravel()とflatten()関数を互換的に使用することができる.
numpyを使用して独自の熱符号化を実現する方法を以下に示します.
import numpy as np
def dense_to_onehot(labels_dense, num_classes=10):
num_labels = labels_dense.shape[0]
index_offset = np.arange(num_labels) * num_classes
labels_onehot = np.zeros((num_labels,num_classes))
# , labels_onehot
labels_onehot.flat[index_offset + labels_dense.ravel()] = 1
print(labels_onehot)
# , 10 , 0-9
labels_dense = np.arange(start=0,stop=10,step=1,dtype=np.uint8)
print(labels_dense)
dense_to_onehot(labels_dense)
'''
[0 1 2 3 4 5 6 7 8 9]
[[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.]]
'''
上のコードではflatとravelの2つの関数を使用しています.マトリクスの平坦化については、次の方法を選択できます.
numpyのravel()、flat()、flatten()、squeeze()、reshape()には、多次元配列を1次元配列に変換する機能があります.ravel():必要がなければ、ソースデータのコピーは生成されません.同じデータ空間flatten()を指します.ソースデータのコピーを返し、新しいメモリ空間を返します.
flat:反復オブジェクトを返します.このオブジェクトとインデックスで対応する1次元にフラット化された値を取得し、squeeze()の変更をサポートします.次元数が1の次元のみ次元を下げます.
またreshape(-1)は多次元配列を「平らにする」こともできる
上記の違いにより、上記のコード実装ではravel()とflatten()関数を互換的に使用することができる.