2016-11-27 1 views
0

私はちょうど単純なMNISTクラシファイアモデルであるthis tutorial on Youtube(.clsと.labelsは1m31sにあります)を試みています。しかし、私はTensorflowの明らかに欠けている機能のためにそれを完了できませんでした。one_hot = Trueを指定した後、MNISTの例から整数ラベルを取得する方法は?

>>>from tensorflow.examples.tutorials.mnist import input_data 
>>>data = input_data.read_data_sets("data/MNIST", one_hot=True) 

>>>one_hot_labels = data.test.labels #mat shape=(num_images X num_classes) 
>>>cls_labels = data.test.cls #mat shape=(num_images X 1) 
Traceback (most recent call last): 
    File "/home/file.py", line 5, in <module> 
    cls_labels = data.test.cls 
AttributeError: 'DataSet' object has no attribute 'cls' 

GoogleでTFで ".cls"参照を検索したところ、それに関する情報が見つかりませんでした。

物事が働かせた汚れ例:

>>>data = input_data.read_data_sets("data/MNIST", one_hot=True) 
>>>data2 = input_data.read_data_sets("data/MNIST") 

>>>one_hot_labels = data.test.labels #mat shape=(num_images X num_classes) 
>>>cls_labels = data2.test.labels #mat shape=(num_images X 1) 

私は、Linux上でTensorflow 0.10.0を使用していますし、.clsのオプションが削除されている場合は疑問に思って?

もしそうなら、one_hotベクトルの配列からクラシファイア名の配列をエンコードする別の方法がありますか?

おかげ

+1

Numpyを使用した回避策が見つかりました。 one_hot = Trueを指定すると、整数ラベルの配列に戻すことができます。np.argmax(data.test.labels、axis = 1) – Logic1

答えて

0

現在、我々は、画像データの属性imagesを使用するとクラス(ラベル)についてlabels。たとえば、

from tensorflow.examples.tutorials.mnist import input_data 
mnist = input_data.read_data_sets("data/MNIST", one_hot=True) 
# data 
images = mnist.test.images 
# label 
labels = mnist.test.labels 

# without one-hot 
mnist = input_data.read_data_sets("data/MNIST", one_hot=False) 
# original data 
images = mnist.test.images.reshape([-1, 28, 28]) 
print(images.shape) 
# label 
labels = mnist.test.labels 
print(labels) 
+0

画像関数に気付きましたが、これはピクセルデータのフラット化されたベクトルですそのone_hotベクトルに対応する整数ラベルではない。例:data.test.labels = [0,0,0,0,0,0,0,1,0,0]とdata.test.cls = [7] – Logic1

+0

はい、元の 'read_data_sets'関数はMNISTを変換しますイメージを一次元のベクトルに変換します。元のデータを取得したい場合は、データを「再形成」して取得します。整数ラベルを使用する場合は、 'read_data_sets'関数で' one_hot = False'を使う必要があります。私はそれらを説明する変更コードがあります。 – daoliker

関連する問題