one_hot実装
1217 ワード
tensorflow one_hot , :
def dense_to_one_hot(labels_dense, num_classes):
"""Convert class labels from scalars to one-hot vectors."""
num_labels = labels_dense.shape[0]
index_offset = numpy.arange(num_labels) * num_classes
labels_one_hot = numpy.zeros((num_labels, num_classes))
labels_one_hot.flat[index_offset + labels_dense.ravel()] = 1
return labels_one_hot
関数の理解:1.まず、labels_denseはnumpyのarrayタイプのデータでなければなりません.shapeプロパティを使用するためです.2.最初にlabelsタグの数を取得し、遍歴時の下付き文字を作成する.下付き文字を作成する:
idnex_offset
この下付き文字は1次元時の各labelsの対応する下付き文字を表し、独熱符号化をハッシュチェーンテーブル(各チェーンテーブルは10要素が掛けられた配列)と見なせば、このときのindex_offset
はバケツの番号である.4.one_を作成するhot行列.5.対one_hotマトリクスの指定された位置で付与1の操作を行います.6.index_offset+labels_dense.ravel()
で得られたのは下付きの記号です.6.flatプロパティはarrayの遍歴オブジェクトを返します.この場合、1次元形式です.7.ravel()はコピーを返しますが、このコピーは元のデータの参照であり、c++の参照に似ています.主にストレージスペースの使用を減らすことです.返されるのも1次元形式のデータです.