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

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

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

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

Model

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

Python

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

Q&A

0回答

468閲覧

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

fairlady

総合スコア4

CNN (Convolutional Neural Network)

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

Model

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

Python

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

0グッド

0クリップ

投稿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

1inputs = (IMG_HEIGHT,IMG_WIDTH,1) 2 3model=Sequential() 4 5c0 = Conv2D(16, (3, 3), activation='relu', padding='same' , input_shape = input_shape) 6c0 = BatchNormalization() 7c1 = Conv2D(16, (3, 3), activation='relu', padding='same') 8c1 = BatchNormalization() 9p1a = MaxPooling2D((2, 2)) 10p1b = Dropout(0.2) 11c2 = Conv2D(32, (3, 3), activation='relu', padding='same') 12c2 = BatchNormalization() 13c3 = Conv2D(32, (3, 3), activation='relu', padding='same') 14c3 = BatchNormalization() 15p2a = MaxPooling2D((2, 2)) 16p2b = Dropout(0.2) 17c4 = Conv2D(64, (3, 3), activation='relu', padding='same') 18c4 = BatchNormalization() 19c5 = Conv2D(64, (3, 3), activation='relu', padding='same') 20c5 = BatchNormalization() 21p3a = MaxPooling2D((2, 2)) 22p3b = Dropout(0.2) 23c6 = Conv2D(128, (3, 3), activation='relu', padding='same') 24c6 = BatchNormalization() 25c7 = Conv2D(128, (3, 3), activation='relu', padding='same') 26c7 = BatchNormalization() 27p4a = MaxPooling2D((2, 2)) 28p4b = Dropout(0.2) 29mid1 = Conv2D(256, (3, 3), activation='relu', padding='same') 30mid2 = Conv2D(256, (3, 3), activation='relu', padding='same') 31u14 = Conv2DTranspose(128, (2, 2), strides=(2, 2), padding='same') 32#c14 = concatenate([u14, c7], axis = 3) 33c14a = Conv2D(128, (3, 3), activation='relu', padding='same') 34c14a = BatchNormalization() 35c14b = Conv2D(128, (3, 3), activation='relu', padding='same') 36c14b = BatchNormalization() 37c14c = Dropout(0.2) 38u15 = Conv2DTranspose(64, (2, 2), strides=(2, 2), padding='same') 39#c15 = concatenate([u15, c5], axis=3) 40c15a = Conv2D(64, (3, 3), activation='relu', padding='same') 41c15a = BatchNormalization() 42c15b = Conv2D(64, (3, 3), activation='relu', padding='same') 43c15b = BatchNormalization() 44c15c = Dropout(0.2) 45u16 = Conv2DTranspose(32, (2, 2), strides=(2, 2), padding='same') 46#c16 = concatenate([u16, c3], axis=3) 47c16a = Conv2D(32, (3, 3), activation='relu', padding='same') 48c16a = BatchNormalization() 49c16b = Conv2D(32, (3, 3), activation='relu', padding='same') 50c16b = BatchNormalization() 51c16c = Dropout(0.2) 52u17 = Conv2DTranspose(16, (2, 2), strides=(2, 2), padding='same') 53#c17 = concatenate([u17, c1], axis=3) 54c17a = Conv2D(16, (3, 3), activation='relu', padding='same') 55c17a = BatchNormalization() 56c17b = Conv2D(16, (3, 3), activation='relu', padding='same') 57c17b = BatchNormalization() 58c17c = Dropout(0.2) 59 60outputs = Conv2D(1, (1, 1)) 61 62model.compile(optimizer = tf.keras.optimizers.Adam(lr=0.00001), 63loss='binary_crossentropy', 64metrics=['accuracy']) 65 66history=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形式に変更したのですが,エラーが出てしまいます。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問