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

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

新規登録して質問してみよう
ただいま回答率
87.20%
CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

Python

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

受付中

U-Netの学習で胸部X線画像の判別を行う

fairlady
fairlady

総合スコア2

CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

Python

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

0回答

0評価

0クリップ

203閲覧

投稿2022/01/18 04:08

前提・実現したいこと

大学で胸部X線画像の判別器をU-Netを使って作り、学習させることで、肺の疾患を判別する実験を行っているのですが,エラーが出て困っています。解決方法がわかる方どなたか教えていただきたいです。

発生している問題・エラーメッセージ

ValueError: in user code: File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 878, in train_function * return step_function(self, iterator) File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 867, in step_function ** outputs = model.distribute_strategy.run(run_step, args=(data,)) File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 860, in run_step ** outputs = model.train_step(data) File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 810, in train_step y, y_pred, sample_weight, regularization_losses=self.losses) File "/usr/local/lib/python3.7/dist-packages/keras/engine/compile_utils.py", line 201, in __call__ loss_value = loss_obj(y_t, y_p, sample_weight=sw) File "/usr/local/lib/python3.7/dist-packages/keras/losses.py", line 141, in __call__ losses = call_fn(y_true, y_pred) File "/usr/local/lib/python3.7/dist-packages/keras/losses.py", line 245, in call ** return ag_fn(y_true, y_pred, **self._fn_kwargs) File "/usr/local/lib/python3.7/dist-packages/keras/losses.py", line 1665, in categorical_crossentropy y_true, y_pred, from_logits=from_logits, axis=axis) File "/usr/local/lib/python3.7/dist-packages/keras/backend.py", line 4994, in categorical_crossentropy target.shape.assert_is_compatible_with(output.shape) ValueError: Shapes (None, 4) and (None, 64, 64, 3) are incompatible

該当のソースコード

python

inputs = (IMG_HEIGHT,IMG_WIDTH,1) model=Sequential() c0 = Conv2D(16, (3, 3), activation='relu', padding='same' , input_shape = input_shape) c0 = BatchNormalization() c1 = Conv2D(16, (3, 3), activation='relu', padding='same') c1 = BatchNormalization() p1a = MaxPooling2D((2, 2)) p1b = Dropout(0.2) c2 = Conv2D(32, (3, 3), activation='relu', padding='same') c2 = BatchNormalization() c3 = Conv2D(32, (3, 3), activation='relu', padding='same') c3 = BatchNormalization() p2a = MaxPooling2D((2, 2)) p2b = Dropout(0.2) c4 = Conv2D(64, (3, 3), activation='relu', padding='same') c4 = BatchNormalization() c5 = Conv2D(64, (3, 3), activation='relu', padding='same') c5 = BatchNormalization() p3a = MaxPooling2D((2, 2)) p3b = Dropout(0.2) c6 = Conv2D(128, (3, 3), activation='relu', padding='same') c6 = BatchNormalization() c7 = Conv2D(128, (3, 3), activation='relu', padding='same') c7 = BatchNormalization() p4a = MaxPooling2D((2, 2)) p4b = Dropout(0.2) mid1 = Conv2D(256, (3, 3), activation='relu', padding='same') mid2 = Conv2D(256, (3, 3), activation='relu', padding='same') u14 = Conv2DTranspose(128, (2, 2), strides=(2, 2), padding='same') #c14 = concatenate([u14, c7], axis = 3) c14a = Conv2D(128, (3, 3), activation='relu', padding='same') c14a = BatchNormalization() c14b = Conv2D(128, (3, 3), activation='relu', padding='same') c14b = BatchNormalization() c14c = Dropout(0.2) u15 = Conv2DTranspose(64, (2, 2), strides=(2, 2), padding='same') #c15 = concatenate([u15, c5], axis=3) c15a = Conv2D(64, (3, 3), activation='relu', padding='same') c15a = BatchNormalization() c15b = Conv2D(64, (3, 3), activation='relu', padding='same') c15b = BatchNormalization() c15c = Dropout(0.2) u16 = Conv2DTranspose(32, (2, 2), strides=(2, 2), padding='same') #c16 = concatenate([u16, c3], axis=3) c16a = Conv2D(32, (3, 3), activation='relu', padding='same') c16a = BatchNormalization() c16b = Conv2D(32, (3, 3), activation='relu', padding='same') c16b = BatchNormalization() c16c = Dropout(0.2) u17 = Conv2DTranspose(16, (2, 2), strides=(2, 2), padding='same') #c17 = concatenate([u17, c1], axis=3) c17a = Conv2D(16, (3, 3), activation='relu', padding='same') c17a = BatchNormalization() c17b = Conv2D(16, (3, 3), activation='relu', padding='same') c17b = BatchNormalization() c17c = Dropout(0.2) outputs = Conv2D(1, (1, 1)) model.compile(optimizer = tf.keras.optimizers.Adam(lr=0.00001), loss='binary_crossentropy', metrics=['accuracy']) history=model.fit(x_train, y_train, epochs=50, validation_data = (x_test,y_test))

コードの全文

from keras.utils import np_utils from keras.models import Sequential from tensorflow.keras import Input,Model import tensorflow as tf from keras.layers.convolutional import MaxPooling2D from keras.layers import Activation, Conv2D, Flatten, Dense, Dropout,BatchNormalization,concatenate,Conv2DTranspose from keras.engine import base_layer_utils from sklearn.model_selection import train_test_split from sklearn.metrics import confusion_matrix, classification_report import numpy as np import keras import glob import matplotlib.pyplot as plt import os import cv2 #分類するカテゴリの数 num_classes = 4 bacteria = [] virus = [] normal = [] covid19 = [] #w = glob.glob("/content/drive/MyDrive/resize/resize_bacteria/*.*") w = glob.glob("/content/drive/MyDrive/resize/bacteria_small/*.*") i = 1 for file in w: img_bacteria = cv2.imread(file) img_bacteria = np.array(img_bacteria) bacteria.append(img_bacteria) bacteria = np.array(bacteria) #x = glob.glob("/content/drive/MyDrive/resize/resize_virus/*.*") x = glob.glob("/content/drive/MyDrive/resize/virus_small/*.*") i = 1 for file in x: img_virus = cv2.imread(file) img_virus = np.array(img_virus) virus.append(img_virus) virus = np.array(virus) #y = glob.glob("/content/drive/MyDrive/resize/resize_normal/*.*") y = glob.glob("/content/drive/MyDrive/resize/normal_small/*.*") i = 1 for file in y: img_normal = cv2.imread(file) img_normal = np.array(img_normal) normal.append(img_normal) normal = np.array(normal) #z = glob.glob("/content/drive/MyDrive/resize/resize_covid19/*.*") z = glob.glob("/content/drive/MyDrive/resize/covid19_small/*.*") i = 1 for file in z: img_covid19 = cv2.imread(file) img_covid19 = np.array(img_covid19) covid19.append(img_covid19) covid19 = np.array(covid19) np.savez('gazou_np', bacteria, virus, normal, covid19) a = np.load('/content/gazou_np.npz', allow_pickle=True) x = np.concatenate([a['arr_0'],a['arr_1'],a['arr_2'],a['arr_3']]) bacteria_label = np.array([0]*len(a['arr_0'])) virus_label = np.array([1]*len(a['arr_1'])) normal_label = np.array([2]*len(a['arr_2'])) covid19_label = np.array([3]*len(a['arr_3'])) y = np.concatenate([bacteria_label, virus_label, normal_label, covid19_label]) y = np.array(y) print(x.shape) print(y.shape) x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.20) #画像データの正規化を行う x_train = x_train.astype('float32')/255 x_test = x_test.astype('float32')/255 #出力をone hot vector形式に変換 y_train = np_utils.to_categorical(y_train, num_classes) y_test = np_utils.to_categorical(y_test, num_classes) #入力サイズを指定する input_shape = x_train.shape[1:] print(input_shape) IMG_HEIGHT = 64 IMG_WIDTH = 64

試したこと

x_train, x_testを正規化し,y_train, y_testをone hot bector形式に変更したのですが,エラーが出てしまいます。

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

Python

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