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

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

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

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

機械学習

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1240閲覧

自作画像を使用してTensorFlowの公式サイト(画像認識)を最初から実装したい。

51sep

総合スコア22

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

機械学習

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2020/02/02 17:07

TensorFlowビギナーです。
自作画像を使用して、以下のTensorFlowの公式サイトを最初から実装したいと考えています。

はじめてのニューラルネットワーク:分類問題の初歩

現在、自作画像を以下のTensorFlowの公式サイト「(image, label)のペアのデータセット」の項目まで、一応実行ました。
自作画像は、以下「3」のようなpng画像達です。

tf.dataを使って画像をロードする

3.png

質問は2点です。
1.上記まで用意した自作画像データで(MNISTを自作画像データに代えて)公式プログラムを実行できる?かどうか
2.1でOKな場合、どのようにすれば、以下のプログラムのように割り当てられるか?

(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()

ざっくりとした質問で申し訳ございません。
しかし、これからのアプローチがなかなか思いつきません。
どなたか、アドバイスをお願いしてもよろしいでしょうか。

以前、以下の質問させていただき、回答者様のおかげで、ここまでは何とか確認できています。まだ結果のグラフを表示させることができていませんが。。

TensorFlowの公式サイトのプログラムを使って自分の手書き画像を予測したい

■環境
python ver.3.8.1
tensorflow ver.2.0.0

以上、どうぞよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

写経から一歩進んだコーディングを楽しんでいるころと思います。

1.上記まで用意した自作画像データで(MNISTを自作画像データに代えて)公式プログラムを実行できる?かどうか

できます。
TFやKERASのバージョンにもよりますが大方こんな感じの処理がされています。これを自前で差し替えればよいですね。この場合は解凍してnumpy arrayにしていますので、画像を読み込んで同じ形式の
numpy arrayを自前で用意したら動くようになります。

2.1でOKな場合、どのようにすれば、以下のプログラムのように割り当てられるか?

まずは、print(train_images.shape)print(train_labels.shape)から始めましょう。データの形式が分かるはずです。この形式に沿って、画像であればcv2.imread()などで画像を読み込み、numpy arrayに束ねることになります。フォルダごとにラベルを割り振ればフォルダ名(の数字)でtrain_labelsがそのまま使えるようになりますね。フォルダの中身をさらう方法も必要になってくると思います。

分からないことがありましたら質問かこちらにコメントください。

投稿2020/02/03 21:58

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

51sep

2020/02/04 19:29

ご回答をありがとうございます! 恥ずかしながら、写経のくせは続いておりまして、先駆者様方のプログラムを見ては混乱しております。 すみませんが、お言葉に甘えまして、またコメントさせて頂きました。 現状、以下の問題でハマってしまいました。もしよろしければ、アドバイスをお願いしてもよろしいでしょうか。 以下のフォルダの構造でフォルダ番号を正解ラベル?(正解クラス?)として100個のpng画像を80:20に分けたいと思います。(1~0まで10フォルダ、1フォルダ10個のpng) photos/ 1/ 1_01.png 1_02.png … 2/ 2_01.png 2_02.png … 色々なサイトを見ながら試行錯誤して以下まで来ました。 train_images, valid_images, train_labels, valid_labels = train_test_split(v_image, v_label, test_size=0.20) train_images.shape #(80, 28, 28, 3) print(train_labels) # [[0. 0. 0. 0. 1. 0. 0. 0. 0. 0.] … … 以下の2つの問題でストップしています。。 ・形状を(XX,28,28)にしたいのですが、やはりうまくいきません。 ・画像の正解ラベル?(正解クラス?)がうまく表示されません。 →上記のような変換した表示になってしまいます。以下の公式プログラムをplt.xlabel([train_labels[i]])にしただけです。 plt.figure(figsize=(10,10)) for i in range(5): plt.subplot(5,5,i+1) plt.xticks([]) plt.yticks([]) plt.grid(False) plt.imshow(train_images[i], cmap=plt.cm.binary) plt.xlabel([train_labels[i]]) plt.show() ちなみに、fashion_mnist.pyも見てみましたが、以下のErrorで確認できませんでした。 ModuleNotFoundError: No module named 'tensorflow.python.keras._impl'
51sep

2020/02/05 06:41

ご回答をありがとうございます。 取り急ぎ、エラーの件は解消いたしましたので、ご連絡しておきします。 本当になんとお礼を言ったらよいのやら。。
退会済みユーザー

退会済みユーザー

2020/02/06 21:33

> ・形状を(XX,28,28)にしたいのですが、やはりうまくいきません。 (画像インデックス,28,28)でグレースケールにしたいということでしょうか? NNにつっこむときは、グレースケールであっても(80, 28, 28,1)にしないといけなかったと思います。 また、現状が(80, 28, 28, 3)であれば、80枚の28px四方の画像(カラー3ch)が正常に読み込めているようです。 > ・画像の正解ラベル?(正解クラス?)がうまく表示されません。 print([train_labels[i])をすると正解の情報[0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]が見えるはずです。 ここから、print(np.argmax(train_labels[i]))とすると、train_labels[i]の最大値のインデックスーー上記で言えば4が返ってきます。 もし、ラベルの説明が入ったリストcat_name=["Cat A","Cat B","Cat D","Cat E", "Cat F", ..., "Cat J"]があらかじめ定義されていたらprint(cat_name[np.argmax(train_labels[i])])とすれば、インデックス4の”Cat E”が返ってきます。 こんな感じでいかがでしょうか?
51sep

2020/02/08 00:08

ご回答をありがとうございます。 できました!。上記、2点の疑問点を解消できました。(結果の正確度はサンザンでしたが) 1点目はご指示の通り、読み込めていて、(80, 28, 28,1)してから np.squeeze(train_images)で(80, 28, 28)にしてOKとなりました。 2点目もご指示の通りで、いずれのケースも確認できました。 (回答がドンピシャすぎて、、息をのみました) 正確度を上げるという点ではまだまだですが、まず一歩進めてほっとしました。 本当にどうもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問