这是我的尝试:
inputs = Input(shape=(config.N_FRAMES_IN_SEQUENCE, config.IMAGE_H, config.IMAGE_W, config.N_CHANNELS))
def cnn_model(inputs):
x = Conv2D(filters=32, kernel_size=(3,3), padding='same', activation='relu')(inputs)
x = MaxPooling2D(pool_size=(2, 2))(x)
x = Conv2D(filters=32, kernel_size=(3,3), padding='same', activation='relu')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)
x = Conv2D(filters=64, kernel_size=(3,3), padding='same', activation='relu')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)
x = Conv2D(filters=64, kernel_size=(3,3), padding='same', activation='relu')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)
x = Conv2D(filters=128, kernel_size=(3,3), padding='same', activation='relu')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)
return x
x = TimeDistributed(cnn_model)(inputs)
这给出了以下错误:
AttributeError: 'function' object has no attribute 'built'
您需要使用Lambda
layer 并将您的功能包装在其中:
# cnn_model function the same way as you defined it ...
x = TimeDistributed(Lambda(cnn_model))(inputs)
或者,您可以将该块定义为模型,然后TimeDistributed
在其上应用层:
def cnn_model():
input_frame = Input(shape=(config.IMAGE_H, config.IMAGE_W, config.N_CHANNELS))
x = Conv2D(filters=32, kernel_size=(3,3), padding='same', activation='relu')(input_frame)
x = MaxPooling2D(pool_size=(2, 2))(x)
x = Conv2D(filters=32, kernel_size=(3,3), padding='same', activation='relu')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)
x = Conv2D(filters=64, kernel_size=(3,3), padding='same', activation='relu')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)
x = Conv2D(filters=64, kernel_size=(3,3), padding='same', activation='relu')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)
x = Conv2D(filters=128, kernel_size=(3,3), padding='same', activation='relu')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)
model = Model(input_frame, x)
return model
inputs = Input(shape=(config.N_FRAMES_IN_SEQUENCE, config.IMAGE_H, config.IMAGE_W, config.N_CHANNELS))
x = TimeDistributed(cnn_model())(inputs)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句