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

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

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

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

Q&A

解決済

2回答

949閲覧

簡単なニューラルネットワークの構築方法

退会済みユーザー

退会済みユーザー

総合スコア0

Python

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

0グッド

0クリップ

投稿2021/04/21 18:18

https://qiita.com/takahiro_itazuri/items/d2bea1c643d7cca11352#comment-a59cd26161ee56ea1220

上記記事は、ニューラルネットワークを用いて、精度を測定するものですが、
精度測定ではなく、実際にニューラルネットワークを用いた「画像の判別」を行いたいのです。

一応、ある画像を、一定の大きさにresizeして、様々な方法で画像情報をリストとして数値化して取得するコードは書けました。

具体的には、
イメージ説明
これであれば、
[5, 2, 0, 0, 0, 1, 5, 4, 4, 4, 4, 3, 2, 2, 2, 0, 3, 3, 3, 3, 6, 5, 1, 1, 1, 1, 5, 0, 4, 4, 7, 3, 3, 3, 3, 1, 2, 2, 2, 2, 5, 0, 4, 8, 8, 2, 5, 3, 10, 10, 5, 5, 8, 7, 6, 4, 5, 5, 5, 5]
こうなります。

たぶん、これを何らかの教師データ、例えば、
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 1, 1, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 6, 0, 0, 10, 2, 2, 2, 2, 2, 2, 2, 2, 10, 10, 2, 2, 2, 2, 2, 2, 2, 2, 10]

これと各値について差を取って、重み掛け合わせて、和を取って、
重みで偏微分して、誤差を0に近づけて・・・とかやるんだと思うんですが、
どんなコードになるんでしょうか?記事を参考にすると、
またこの場合、教師データって何なんでしょうか?
自分としては、A、B、Cの3つの画像の内、どれに最も近いか、等という判定をしたいとひとまずは思うのですが、単純に全てをリスト化したら、リストは3つできますよね、ところが、差を取るのは1つだし・・・よく分からない。

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

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

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

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

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

guest

回答2

0

ベストアンサー

上記記事は、ニューラルネットワークを用いて、精度を測定するものですが、

精度測定ではなく、実際にニューラルネットワークを用いた「画像の判別」を行いたいのです。

前に説明したような気がしますね。

A、B、Cの3つの画像の内、どれに最も近いか、等という判定をしたいとひとまずは思うのですが、単純に全てをリスト化したら、リストは3つできますよね、ところが、差を取るのは1つだし・・・よく分からない。

3つだけの元の画像を用意して、別のとある画像がそのどれに似ているかを判定するのは、ニューラルネットではできません。

Aだと判定される画像を沢山(10000枚とか)、Bだと... Cだと... と30000枚とかの画像を用意して、これを「教師データ」としてニューラルネットを学習させると、学習済ニューラルネットが作れます。
そして、とある画像をその学習済みニューラルネットに食わせると、A/B/Cの何れかに分類してくれます。

指定のサイトのコードはそれをやってます。、

python

1predict = nn.feedforward(idata)

ここがそのニューラルネットに食わせて回答を得ているところで、predictに入った配列で最も値の大きいのが判定結果です。
A/B/Cであれば、predictには、[0.05, 0.98, 0.01] みたいな値が入っていて、これなら「B」だって感じですかね。

わかんないかな。

投稿2021/04/22 13:01

TakaiY

総合スコア12804

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

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

退会済みユーザー

退会済みユーザー

2021/04/22 22:01

もうちょっと説明が欲しいですね。
guest

0

  1. 3つの画像A,B,Cがある
  2. A,B,C以外の画像に対して、A,B,Cのどれに近い(と人は思うか)を判定したい

というタスクに対してニューラルネットで解くための実際の手順(の一例)は

  1. A,B,C以外の画像を1000個とか1000000個とか集めてくる
  2. 正解データを作る人間を連れてくる
  3. 画像を見せてA,B,Cのどれに近いですかと聞く

を繰り返して正解データを作る。

ニューラルネットの学習では
入力に 1. の画像データ
出力に 人間が選んだ答えをベクトルにしたもの(普通は、A なら [1, 0, 0] と、 B なら [0, 1, 0] と、C なら [0, 0, 1] とベクトルにしたもの)
を使う。

学習時の"教師”とは、人間が付けた"タスクに対する正解"のことであって、この場合は"A なら [1, 0, 0] 、 B なら [0, 1, 0] 、C なら [0, 0, 1] "というベクトルが教師になる。

学習でも予測でもA,B,Cの画像データを使うことはない

投稿2021/04/21 23:58

編集2021/04/22 04:06
quickquip

総合スコア11055

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

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

quickquip

2021/04/22 01:54

質問にあるqiitaの記事だと > このメソッドは、入力層の784次元ベクトルと教師データの10次元ベクトルを引数に取ります。教師データはone-hot表現で作っています。 と書いてあるあたり、きっと意味が分からないまま放っておいているか、読み飛ばしてるかしてるよね? そこらあたりから始めないと時間の無駄だよ。 という主旨の回答。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問