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

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

新規登録して質問してみよう
ただいま回答率
87.20%
深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

機械学習

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

Python

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

解決済

Val_accuracyの値が変化しない。

Luiahu
Luiahu

総合スコア1

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

機械学習

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

Python

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

1回答

0評価

0クリップ

756閲覧

投稿2021/12/25 13:28

編集2021/12/25 14:05

現在、製品の不良品を検知するプログラムをGoogle Colaboratoryで作成しようとしています。
VGG16を転移学習して、識別しようとしているのですが現在、損失関数と識別率が以下の通りになっておりまったく学習できていない状態です。
このような現状を解決するアドバイスをいただきたいです。
![イメージ説明イメージ説明

また、val_accuracyの値が変化しないです。

Epoch 1/100 5/5 [==============================] - 5s 1s/step - loss: 0.8709 - accuracy: 0.4800 - val_loss: 0.7470 - val_accuracy: 0.2240 Epoch 2/100 5/5 [==============================] - 4s 982ms/step - loss: 0.6408 - accuracy: 0.6160 - val_loss: 0.9470 - val_accuracy: 0.2000 Epoch 3/100 5/5 [==============================] - 4s 981ms/step - loss: 0.4567 - accuracy: 0.7680 - val_loss: 1.2471 - val_accuracy: 0.2000 Epoch 4/100 5/5 [==============================] - 5s 1s/step - loss: 0.3266 - accuracy: 0.9040 - val_loss: 1.5914 - val_accuracy: 0.2000 Epoch 5/100 5/5 [==============================] - 4s 982ms/step - loss: 0.1663 - accuracy: 0.9920 - val_loss: 1.9080 - val_accuracy: 0.2000

以下コード全文です。

python

from google.colab import drive drive.mount('/content/drive') import pandas as pd import os import numpy as np from keras.applications.vgg16 import VGG16 from keras.preprocessing.image import load_img, img_to_array from keras.models import Sequential, Model from keras import models from keras import layers from keras import regularizers from tensorflow.keras.optimizers import SGD from keras.layers import Input, Dense, GlobalAveragePooling2D, Dropout, Activation, Flatten from tensorflow.keras.utils import to_categorical numOfTrainImage = 250 mini_batch = (int)(numOfTrainImage / 2 / 5) max_epoch = 100 numOfTestImage = 100 #学習用画像とラベルの対応表 df = pd.read_csv('drive/MyDrive/train.csv', delimiter=',') df.head(5) #学習用画像の読み込み dir_name = os.path.join('drive/MyDrive/train_data') imgarray = [] category = [] for filename in sorted(os.listdir(dir_name)[0:numOfTrainImage]): img = load_img(os.path.join(dir_name, filename), color_mode='rgb', target_size=(300,300)) imgdata = img_to_array(img) imgdata = imgdata / 255.0 imgarray.append(imgdata) temp = df[df['id']==filename].target label = df[df['id']==filename].target.values[0] category.append(label) x_train = np.array(imgarray) t_train = to_categorical(np.array(category)) p = np.random.permutation(len(x_train)) x_train, y_train = x_train[p], t_train[p] print("x_train.shape = ", x_train.shape, "t_train.shape = ", t_train.shape) #モデルの構築 input_tensor = Input(shape=(300, 300, 3)) vgg16 = VGG16(include_top=False, weights='imagenet', input_tensor=input_tensor) top_model = vgg16.output top_model=GlobalAveragePooling2D()(top_model) top_model = Flatten(input_shape=vgg16.output_shape[1:])(top_model) top_model = Dense(256, activation='relu')(top_model) top_model = Dropout(0.5)(top_model) top_model = Dense(2, activation='softmax')(top_model) network=Model(inputs=vgg16.input, outputs=top_model) for layer in network.layers[:19]: layer.trainable=False network.summary() network.compile(loss='categorical_crossentropy', optimizer=SGD(lr=1e-4, momentum=0.9), metrics=['accuracy']) history = network.fit(x_train, t_train, epochs=max_epoch, batch_size=mini_batch, validation_split=0.5, shuffle=True) acc_train = np.array(history.history['accuracy']) acc_valid = history.history['val_accuracy'] loss_train = history.history['loss'] loss_valid = history.history['val_loss'] f = open('temp_epoch_loss.dat', 'w') for n in range(0,len(acc_train)): f.write(str(n) + ' ' + str(acc_train[n]) + ' ' + str(loss_train[n]) + ' ' + str(acc_valid[n]) + ' ' + str(loss_valid[n]) + '\n') f.close() import matplotlib.pyplot as plt epochs = range(1, len(loss_train) + 1) plt.plot(epochs, loss_train, 'bo', label='Training loss') plt.plot(epochs, loss_valid, 'b', label='Validatoin loss') plt.title('Training and Validation Loss') plt.xlabel('Epochs') plt.ylabel('Loss') plt.legend() plt.show() plt.plot(epochs, acc_train, 'bo', label='Training acc') plt.plot(epochs, acc_valid, 'b', label='Validation acc') plt.title('Training and Validation Accuracy') plt.xlabel('Epochs') plt.ylabel('Accuracy') plt.legend() plt.show() #テスト画像の読み込み dir_name = os.path.join('drive/MyDrive/test_data') imgarray = [] filenamearray = [] for filename in sorted(os.listdir(dir_name)[0:100]): img = load_img(os.path.join(dir_name, filename), color_mode='rgb', target_size=(300,300)) imgdata = img_to_array(img) imgdata = imgdata / 255.0 imgarray.append(imgdata) filenamearray.append(filename) x_test = np.array(imgarray) y_test = network.predict(x_test) numOfImages, dummy = y_test.shape for n in range(0, numOfTestImage): print(filenamearray[n], end='') for k in range(0,2): print('%6.3f' % y_test[n][k], end='') print() predict_x=network.predict(x_test) y_test = np.argmax(predict_x,axis=1) f = open('submit.csv', 'w') for n in range(0, numOfImages): print(filenamearray[n], y_test[n], sep='\t', file=f) f.close()

追記事項

以下のような特徴量の少ない製品の料品や不良品の検知をしようとしています。
![イメージ説明
イメージ説明

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

meg_

2021/12/25 13:32

> 製品の不良品を検知する データはどのようなものでしょうか?前処理はどのようにされましたか?
Luiahu

2021/12/25 14:06

追記事項に識別したい製品の画像を追加させていただきました。
meg_

2021/12/25 15:57

(データにおける)良品と不良品の比率は半々ですか?
Luiahu

2021/12/26 02:41

そうですね、テスト画像も学習用画像も良品と不良品の数は同じです。
meg_

2021/12/26 02:56

そうですか。 学習は何度トライしても画像のようになるのでしょうか?(訓練データのlossは減少するがバリデーションデータのlossは減少しない)
Luiahu

2021/12/26 06:41

そうですね。 何度トライしてもval_lossの値が減少しない状態ですね。
meg_

2021/12/26 14:01

訓練データでは訓練できたいるようなので、一度訓練データとバリデーションデータに差がないか目視で確認してみてはどうでしょうか?

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

機械学習

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

Python

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