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次元形式のデータです.