前提
python初心者です。
以下のサイトを見て異常検知AIを作ろうとしたのですが以下のエラーメッセージが発生しました。
https://qiita.com/michelle0915/items/28bc5b844bd0d7ab597b
発生している問題・エラーメッセージ
ValueError Traceback (most recent call last) Cell In[3], line 69 65 return K.mean(K.square(y_true - y_pred), axis=[1,2,3]) 67 model.compile(optimizer=optimizer, loss=r_loss) ---> 69 model.fit( 70 train, 71 train, 72 batch_size=BATCH_SIZE, 73 epochs=EPOCHS 74 ) File ~\anaconda3\envs\opencv\lib\site-packages\keras\utils\traceback_utils.py:70, in filter_traceback.<locals>.error_handler(*args, **kwargs) 67 filtered_tb = _process_traceback_frames(e.__traceback__) 68 # To get the full stack trace, call: 69 # `tf.debugging.disable_traceback_filtering()` ---> 70 raise e.with_traceback(filtered_tb) from None 71 finally: 72 del filtered_tb File ~\AppData\Local\Temp\__autograph_generated_fileotg7w6jb.py:15, in outer_factory.<locals>.inner_factory.<locals>.tf__train_function(iterator) 13 try: 14 do_return = True ---> 15 retval_ = ag__.converted_call(ag__.ld(step_function), (ag__.ld(self), ag__.ld(iterator)), None, fscope) 16 except: 17 do_return = False ValueError: in user code: File "C:\Users\owner\anaconda3\envs\opencv\lib\site-packages\keras\engine\training.py", line 1160, in train_function * return step_function(self, iterator) File "C:\Users\owner\anaconda3\envs\opencv\lib\site-packages\keras\engine\training.py", line 1146, in step_function ** outputs = model.distribute_strategy.run(run_step, args=(data,)) File "C:\Users\owner\anaconda3\envs\opencv\lib\site-packages\keras\engine\training.py", line 1135, in run_step ** outputs = model.train_step(data) File "C:\Users\owner\anaconda3\envs\opencv\lib\site-packages\keras\engine\training.py", line 993, in train_step y_pred = self(x, training=True) File "C:\Users\owner\anaconda3\envs\opencv\lib\site-packages\keras\utils\traceback_utils.py", line 70, in error_handler raise e.with_traceback(filtered_tb) from None File "C:\Users\owner\anaconda3\envs\opencv\lib\site-packages\keras\engine\input_spec.py", line 295, in assert_input_compatibility raise ValueError( ValueError: Input 0 of layer "model_8" is incompatible with the layer: expected shape=(None, 300, 300, 3), found shape=(None, 4032, 3024, 3)
該当のソースコード
from tensorflow.keras.layers import Input, Conv2D, Flatten, Dense, Conv2DTranspose, Reshape, Activation, LeakyReLU from tensorflow.keras.models import Model from tensorflow.keras import backend as K from tensorflow.keras.optimizers import Adam import numpy as np import cv2 import glob train_images = glob.glob('training_images/*') train = [] for i in train_images: image = cv2.imread(i) image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) train.append(image) train = np.array(train) train = train.astype('float32') / 255 LEARNING_RATE = 0.0005 BATCH_SIZE = 8 Z_DIM = 100 EPOCHS = 50 encoder_input = Input(shape=(300,300,3), name='encoder_input') x = encoder_input x = Conv2D(filters=32, kernel_size=3, strides=1, padding='same', name='encoder_conv_0')(x) x = LeakyReLU()(x) x = Conv2D(filters=32, kernel_size=3, strides=1, padding='same', name='encoder_conv_0_1')(x) x = LeakyReLU()(x) x = Conv2D(filters=64, kernel_size=3, strides=2, padding='same', name='encoder_conv_1')(x) x = LeakyReLU()(x) x = Conv2D(filters=64, kernel_size=3, strides=2, padding='same', name='encoder_conv_2')(x) x = LeakyReLU()(x) x = Conv2D(filters=64, kernel_size=3, strides=1, padding='same', name='encoder_conv_3')(x) x = LeakyReLU()(x) shape_before_flattening = K.int_shape(x)[1:] x = Flatten()(x) encoder_output = Dense(Z_DIM, name='encoder_output')(x) encoder = Model(encoder_input, encoder_output) decoder_input = Input(shape=(Z_DIM,), name='decoder_input') x = Dense(np.prod(shape_before_flattening))(decoder_input) x = Reshape(shape_before_flattening)(x) x = Conv2DTranspose(filters=64, kernel_size=3, strides=1, padding='same', name='decoder_conv_t_0')(x) x = LeakyReLU()(x) x = Conv2DTranspose(filters=64, kernel_size=3, strides=2, padding='same', name='decoder_conv_t_1')(x) x = LeakyReLU()(x) x = Conv2DTranspose(filters=32, kernel_size=3, strides=2, padding='same', name='decoder_conv_t_2')(x) x = LeakyReLU()(x) x = Conv2DTranspose(filters=32, kernel_size=3, strides=1, padding='same', name='decoder_conv_t_2_5')(x) x = LeakyReLU()(x) x = Conv2DTranspose(filters=3, kernel_size=3, strides=1, padding='same', name='decoder_conv_t_3')(x) x = Activation('sigmoid')(x) decoder_output = x decoder = Model(decoder_input, decoder_output) model_input = encoder_input model_output = decoder(encoder_output) model = Model(model_input, model_output) optimizer = Adam(learning_rate=LEARNING_RATE) def r_loss(y_true, y_pred): return K.mean(K.square(y_true - y_pred), axis=[1,2,3]) model.compile(optimizer=optimizer, loss=r_loss) model.fit( train, train, batch_size=BATCH_SIZE, epochs=EPOCHS )
補足情報(FW/ツールのバージョンなど)
anaconda3 jupyter notebook
opencv 4.6.0
Tensorflow 2.10.0

回答1件
あなたの回答
tips
プレビュー