🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

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

Q&A

解決済

2回答

914閲覧

(tesnsorflow)分類問題で複数解を得る方法をご教授ください

vibrato

総合スコア52

Python

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

0グッド

0クリップ

投稿2021/01/25 01:56

下記コードはmnistの手書き数字データなので、それぞれの画像1枚につき一つの答え(0~9のうち一つ)を持ちますが、
例えば、動物園で撮った写真に「ぞう」「きりん」「うし」が映っている場合
「ぞう・きりん・うし」という複数解を得たい場合があります。その場合どうすべきでしょうか?
(「しか・らいおん・へび・ぱんだ・うし・くじゃく・きりん」の7つの回答が与えられてるとします。)
ご教授お願いいたします。

python

1from __future__ import absolute_import, division, print_function, unicode_literals 2import tensorflow as tf 3 4mnist = tf.keras.datasets.mnist 5(x_train, y_train), (x_test, y_test) = mnist.load_data() 6x_train, x_test = x_train / 255.0, x_test / 255.0 7 8model = tf.keras.models.Sequential([ 9 tf.keras.layers.Flatten(input_shape=(28, 28)), 10 tf.keras.layers.Dense(128, activation='relu'), 11 tf.keras.layers.Dropout(0.2), 12 tf.keras.layers.Dense(10, activation='softmax')# (7, activation='softmax') 13]) 14model.compile( 15 optimizer='adam', 16 loss='sparse_categorical_crossentropy', 17 metrics=['accuracy'] 18) 19 20model.fit(x_train, y_train, epochs=5) 21 22model.evaluate(x_test, y_test, verbose=2)

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

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

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

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

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

guest

回答2

0

自己解決

参考ページ1:URL
参考ページ2:URL
動物の名前ではなくmnistでの記述ですが、上記のページを参考に解決致しました。ただし下記のコードでは与えたラベルがすべて同じなので意味のある結果にはなりませんが、四種類のアウトプットが可能です。

python

1import numpy as np 2import tensorflow as tf 3from tensorflow import keras 4from tensorflow.keras import layers 5 6mnist = tf.keras.datasets.mnist 7(x_train, y_train1), (x_test, y_test1) = mnist.load_data() 8y_train2, y_train3, y_train4 = y_train1, y_train1, y_train1 9y_test2, y_test3, y_test4 = y_test1, y_test1, y_test1 10x_train, x_test = x_train / 255.0, x_test / 255.0 11 12inp = layers.Input(shape=(28, 28)) 13x = layers.Flatten()(inp) 14x = layers.Dense(128, activation='relu')(x) 15x = layers.Dropout(0.5)(x) 16output1 = layers.Dense(10, activation='softmax', name='output1')(x) 17output2 = layers.Dense(10, activation='softmax', name='output2')(x) 18output3 = layers.Dense(10, activation='softmax', name='output3')(x) 19output4 = layers.Dense(10, activation='softmax', name='output4')(x) 20multiModel = keras.Model(inp, [output1, output2, output3, output4]) 21multiModel.compile(loss={'output1': 'sparse_categorical_crossentropy', 22 'output2': 'sparse_categorical_crossentropy', 23 'output3': 'sparse_categorical_crossentropy', 24 'output4': 'sparse_categorical_crossentropy'}, 25 optimizer="adam", 26 metrics=['accuracy']) 27 28# early stopping and model checkpoint 29es_cb = keras.callbacks.EarlyStopping(monitor='val_loss', patience=3, verbose=1, mode='auto') 30chkpt = "./chkpt.hdfs" 31cp_cb = keras.callbacks.ModelCheckpoint(filepath=chkpt, monitor='val_loss', verbose=1, save_best_only=True, mode='auto') 32 33# train model 34history = multiModel.fit(x_train, 35 {'output1': y_train1, 36 'output2': y_train2, 37 'output3': y_train3, 38 'output4': y_train4}, 39 epochs=5, 40 validation_data=(x_test, 41 {'output1': y_test1, 42 'output2': y_test2, 43 'output3': y_test3, 44 'output4': y_test4}), 45 callbacks=[es_cb, cp_cb])

投稿2021/01/26 13:41

編集2021/01/26 13:45
vibrato

総合スコア52

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

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

0

多ラベル分類
マルチラベル分類

あたりでググってみてください

投稿2021/01/26 01:36

jbpb0

総合スコア7653

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問