質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

統計

統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。

Q&A

解決済

1回答

684閲覧

MNISTのラベルと同じ形式の仮データを作りたい。

dendenmushi

総合スコア98

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

統計

統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。

0グッド

0クリップ

投稿2020/02/02 14:55

前提・実現したいこと

ローカル画像を取り込んだ際のラベルについてデータ型や色相などすべてをMNISTと同じ形式として新規作成する方法。
なぜならば任意のローカル画像を学習させたファイルを使い推論を行う際に任意のテスト配列を仮に投入する必要があるため。

環境

windows10 64bit
python3.7

該当のソースコード

python

1x_test, y_test = data

このy_testデータにはMNIST1万の画像データのラベルが入っています。
y_test.shape = (10000, 10)
y_test[0].shape = (10,)

cmd

1(Pdb) y_test[0] 2array([0., 0., 0., 0., 0., 0., 0., 1., 0., 0.], dtype=float32) 3(Pdb) y_test.dtype 4dtype('float32')

試したこと

python

1 a_float_y = np.array([[0.,0.,0.,0.,0.,0.,0.,0.,0.,1.]]) 2 a_float_y = a_float_y.astype(np.float32)

結果

作ったもの

python

1a_float_y = np.array([[0.,0.,0.,0.,0.,0.,0.,0.,0.,1.]]) 2a_float_y = a_float_y.astype(np.float32) 3 4Pdb) a_float_y.shape 5(1, 10) 6 7(Pdb) a_float_y.dtype 8dtype('float32') 9 10(Pdb) p np.unique(np.argmax(y_test, 1)) 11array([9], dtype=int64) 12

しかし、MNISTでは以下でした。

python

1(Pdb) y_test.shape 2(10000, 10) 3 4(Pdb) y_test.dtype 5dtype('float32') 6 7(Pdb) p np.unique(np.argmax(y_test, 1)) 8array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=int64) 9

推論時に次元が違ってしまいエラーがでており、解消するためにまったく同じ仮データを入れたいです。
MNISTを同じものをロードする以外に、自分で簡易に仮データを作る方法についてアドバイス頂けないでしょうか。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Keras の場合、
まず 0 ~ 9 の整数で表される各サンプルのラベルを1次元配列で用意して、to_categorical() で one-hot 表現に変換しましょう。

python

1from keras.utils import to_categorical 2 3y_label = [0, 1, 3, 4, 7, 9] 4 5y_label_onehot = to_categorical(y_label, num_classes=10) 6print(y_label_onehot) 7# [[1. 0. 0. 0. 0. 0. 0. 0. 0. 0.] 8# [0. 1. 0. 0. 0. 0. 0. 0. 0. 0.] 9# [0. 0. 0. 1. 0. 0. 0. 0. 0. 0.] 10# [0. 0. 0. 0. 1. 0. 0. 0. 0. 0.] 11# [0. 0. 0. 0. 0. 0. 0. 1. 0. 0.] 12# [0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]]

投稿2020/02/02 15:31

編集2020/02/02 16:06
tiitoi

総合スコア21954

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dendenmushi

2020/02/02 15:58

ありがとうございます。013479で3クラスという箇所が今疑問ですが、まずonehot作って行ってみます。 https://github.com/XifengGuo/CapsNet-Keras このモデルをローカル画像で試す場合は、やはりtestメソッドにx_test,y_testにそれぞれ代入していく方法が推論方法として適当なのでしょうか。差し支えなければこちらもお聞きしてもよろしいでしょうか。それともmodel.predictの早い推論方法などありますか?私は今x_testをなんとか画像shapeやdtypeを合わせました。よろしくお願い致します。
tiitoi

2020/02/02 16:08

> 013479で3クラスという箇所が今疑問ですが すいません。それはコメントのミスでしたので、消しました。 > やはりtestメソッドにx_test,y_testにそれぞれ代入していく方法が推論方法として適当なのでしょうか test メソッドとはどれのことを言っていますか?
dendenmushi

2020/02/02 16:17 編集

>すいません。それはコメントのミスでしたので、消しました。 承知しました。今回一枚だけの画像なのでy_label=[0]でonehotということですね。 引き続き行ってみます。 >testメソッドとは https://github.com/XifengGuo/CapsNet-Keras/blob/master/capsulenet.py 150行目 def test(model, data, args):こちらのメソッドです。 ここのdata(x_test,y_test)にそれぞれ ローカル画像の(1,28,28,1)にreshapeなど調整したものを代入し、y_testには適当なラベル(間違ってもよい) を入れて、実行すれば(python capsulenet.py -t -w result/trained_model.h5) 結果がでてくると思っています。もっと効率のいい推論方法などないかと非常に悩んでおります。 (例えばMNIST画像をローカルにimgファイルとして落として、それを行列数値化して学習済みデータで推論を行うでもよいのですが、その際の効率のいいmodel.predict?のコードを記載悩んでおります。
tiitoi

2020/02/02 17:28

onehot 表現は整数値を0,1のバイナリ値で表現する方法です。 http://tacky0612.hatenablog.com/entry/2018/10/18/114815 例えば、2の画像のクラスが2という整数値で表されているとすると、onehot 表現にしたとき、[0, 0, 1, 0, 0, 0, 0, 0, 0, 0] のように該当する場所だけ1、それ以外は0のベクトルで表す方法です。 (10000, 10) ということは、onehot 表現のラベルを期待されているということです。 > もっと効率のいい推論方法などないかと非常に悩んでおります。 ローカルの画像とラベルを読み込んで、 画像は shape などを調整し、ラベルは onehot 表現にして、推論するでいいと思います。
dendenmushi

2020/02/02 18:20

ありがとうございました。別途同じプログラムで質問がありますのでまたよろしくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問