質問
tensorflowのimage内の関数random_cropを使うと以下のエラーが出ます。
tf.random_cropでは次元の数は変わらないと思うのですが。
どのようにすれば解消できますか。
エラーメッセージ
以下はモデルを初期化する際に発生するメッセージです。
python
1Dimensions must be equal, but are 4 and 3 for 'lambda_20/random_crop/GreaterEqual' (op: 'GreaterEqual') with input shapes: [4], [3].
### ソースコード
python
1def multiresolution_model(): 2 inputs = Input(shape=(entire_x, entire_y, 3)) 3 4 high = Lambda(lambda image: tf.image.resize_images(image, (img_width, img_height)))(inputs) #こちらは問題なく通る 5 x = Conv2D(64, (3, 3), activation='relu', padding='same', name='block1_conv1')(high) 6 x = BatchNormalization()(x) 7 x = Conv2D(64, (3, 3), activation='relu', padding='same', name='block1_conv2')(x) 8 x = BatchNormalization()(x) 9 x = MaxPooling2D((2, 2), strides=(2, 2), padding='same', name='block1_pool')(x) 10 x = Conv2D(128, (3, 3), activation='relu', padding='same', name='block2_conv1')(x) 11 x = BatchNormalization()(x) 12 x = Conv2D(128, (3, 3), activation='relu', padding='same', name='block2_conv2')(x) 13 x = BatchNormalization()(x) 14 x = MaxPooling2D((2, 2), strides=(2, 2), padding='same', name='block2_pool')(x) 15 x = Conv2D(256, (3, 3), activation='relu', padding='same', name='block3_conv1')(x) 16 x = BatchNormalization()(x) 17 x = Conv2D(256, (3, 3), activation='relu', padding='same', name='block3_conv2')(x) 18 x = BatchNormalization()(x) 19 x = Conv2D(256, (3, 3), activation='relu', padding='same', name='block3_conv3')(x) 20 x = BatchNormalization()(x) 21 x = MaxPooling2D((2, 2), strides=(2, 2), padding='same', name='block3_pool')(x) 22 x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block4_conv1')(x) 23 x = BatchNormalization()(x) 24 x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block4_conv2')(x) 25 x = BatchNormalization()(x) 26 x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block4_conv3')(x) 27 x = BatchNormalization()(x) 28 x = MaxPooling2D((2, 2), strides=(2, 2), padding='same', name='block4_pool')(x) 29 x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block5_conv1')(x) 30 x = BatchNormalization()(x) 31 x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block5_conv2')(x) 32 x = BatchNormalization()(x) 33 x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block5_conv3')(x) 34 x = BatchNormalization()(x) 35 x = MaxPooling2D((2, 2), strides=(2, 2), padding='same', name='block5_pool')(x) 36 flattened_high = Flatten(name='flatten')(x) 37 38 #ここが問題の文 39 low = Lambda(lambda image: tf.random_crop(image, [img_height, img_width, 3]))(inputs)#次元が違うとして止まる 40 ###### 41 x = Conv2D(64, (3, 3), activation='relu', padding='same', name='block1_conv1-2')(low) 42 x = BatchNormalization()(x) 43 x = Conv2D(64, (3, 3), activation='relu', padding='same', name='block1_conv2-2')(x) 44 x = BatchNormalization()(x) 45 x = MaxPooling2D((2, 2), strides=(2, 2), padding='same', name='block1_pool-2')(x) 46 x = Conv2D(128, (3, 3), activation='relu', padding='same', name='block2_conv1-2')(x) 47 x = BatchNormalization()(x) 48 x = Conv2D(128, (3, 3), activation='relu', padding='same', name='block2_conv2-2')(x) 49 x = BatchNormalization()(x) 50 x = MaxPooling2D((2, 2), strides=(2, 2), padding='same', name='block2_pool-2')(x) 51 x = Conv2D(256, (3, 3), activation='relu', padding='same', name='block3_conv1-2')(x) 52 x = BatchNormalization()(x) 53 x = Conv2D(256, (3, 3), activation='relu', padding='same', name='block3_conv2-2')(x) 54 x = BatchNormalization()(x) 55 x = Conv2D(256, (3, 3), activation='relu', padding='same', name='block3_conv3-2')(x) 56 x = BatchNormalization()(x) 57 x = MaxPooling2D((2, 2), strides=(2, 2), padding='same', name='block3_pool-2')(x) 58 x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block4_conv1-2')(x) 59 x = BatchNormalization()(x) 60 x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block4_conv2-2')(x) 61 x = BatchNormalization()(x) 62 x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block4_conv3-2')(x) 63 x = BatchNormalization()(x) 64 x = MaxPooling2D((2, 2), strides=(2, 2), padding='same', name='block4_pool-2')(x) 65 x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block5_conv1-2')(x) 66 x = BatchNormalization()(x) 67 x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block5_conv2-2')(x) 68 x = BatchNormalization()(x) 69 x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block5_conv3-2')(x) 70 x = BatchNormalization()(x) 71 x = MaxPooling2D((2, 2), strides=(2, 2), padding='same', name='block5_pool-2')(x) 72 flattened_low = Flatten(name='flatten-2')(x) 73 74 merge = concatenate([flattened_low, flattened_high]) 75 x = Dense(4096, activation='relu', name='fc1')(merge) 76 x = Dropout(0.5, name='dropout1')(x) 77 x = Dense(4096, activation='relu', name='fc2')(x) 78 x = Dropout(0.5, name='dropout2')(x) 79 predictions = Dense(nb_classes, activation='softmax', name='predictions')(x) 80 model = Model(inputs=inputs, outputs=predictions) 81 82 return model
補足
入力層でクロップ画像とリサイズ画像の2パターンを並列に扱うモデルを組み立てる際にcropがモデル中で定義できなかったので質問させていただきました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/11/01 16:52
2018/11/02 03:57
退会済みユーザー
2018/11/06 04:38
2018/11/06 05:19
退会済みユーザー
2018/11/06 06:21