from tensorflow.python.keras.models import Model from tensorflow.python.keras.layers import Input, Conv3D, Lambda from tensorflow.python.keras import backend as K _input = Input(shape=(32,32,32,3)) x = Conv3D(16, 3, padding='same', activation='relu')(_input) x1 = Conv3D(3, 3, padding='same',activation='relu')(x) x2 = Lambda(lambda x: K.sum(x, axis=0), output_shape=lambda input_shape:(None, 32, 32, 3))(x1) model = Model(inputs=_input, outputs= x2) model.summary()
上のコードを実行すると以下のように出力されます。
Layer (type) Output Shape Param #
input_2 (InputLayer) (None, 32, 32, 32, 3) 0
conv3d_2 (Conv3D) (None, 32, 32, 32, 16) 1312
conv3d_3 (Conv3D) (None, 32, 32, 32, 3) 1299
lambda (Lambda) (32, 32, 32, 3) 0
Total params: 2,611
Trainable params: 2,611
Non-trainable params: 0
ここで質問なのですが、lambdaの出力を(None,32,32,3)としたいです。
より具体的に言うと、lambdaに入力される5次元のテンソル(None, 32, 32, 32, 3)の、真ん中の3つの(32, 32, 32)を3次元のベクトルxと見たとき、その3次元ベクトルxを、K.sum(x, axis=0)の様に計算し、(32,32)の二次元ベクトルにし、(None, 32, 32, 3)と出力したいです。
lambdaで入力と出力の次元が変わるときの、記述の仕方が分かりません。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。