Ошибка при добавлении слоя Flatten в последовательную модель - PullRequest
0 голосов
/ 09 июня 2018

Я создал и обучил автокодер с использованием Keras.После обучения этой модели я хочу получить только часть кодера, поэтому я сделал pop().

Позже я создал модель Sequential(), основанную на остальных слоях моей модели автоэнкодера:

model_seq = Sequential(layers=autoencoder.layers)

Чтобы добавить слой Flatten(), я сделал:

l_out = Flatten()(model_seq.output)
model_seq.layers.append(l_out)

На мой взгляд, этого должно быть достаточно, поэтому я позвонил model_seq.summary(), чтобы проверить, все ли в порядке.Но, к сожалению, у меня есть эта ошибка:

    model_seq.summary()
    _________________________________________________________________
    Layer (type)                 Output Shape              Param #   
    =================================================================
    input_1 (InputLayer)         (None, 256, 256, 1)       0         
    _________________________________________________________________
    conv2d_1 (Conv2D)            (None, 256, 256, 32)      320       
    _________________________________________________________________
    max_pooling2d_1 (MaxPooling2 (None, 128, 128, 32)      0         
    _________________________________________________________________
    conv2d_2 (Conv2D)            (None, 128, 128, 64)      18496     
    _________________________________________________________________
    max_pooling2d_2 (MaxPooling2 (None, 64, 64, 64)        0         
    _________________________________________________________________
    conv2d_3 (Conv2D)            (None, 64, 64, 128)       73856     
    _________________________________________________________________
    Traceback (most recent call last):

      File "<ipython-input-49-cb26bbc86f4b>", line 1, in <module>
        model_seq.summary()

      File "C:\Users\helde\Miniconda3\lib\site-packages\keras\engine\topology.py", line 2740, in summary
        print_fn=print_fn)

      File "C:\Users\helde\Miniconda3\lib\site-packages\keras\utils\layer_utils.py", line 150, in print_summary
        print_layer_summary(layers[i])

      File "C:\Users\helde\Miniconda3\lib\site-packages\keras\utils\layer_utils.py", line 110, in print_layer_summary
        fields = [name + ' (' + cls_name + ')', output_shape, layer.count_params()]

    AttributeError: 'Tensor' object has no attribute 'count_params'

Часть, в которой summary() вызывает ошибку, находится именно там, где должен быть слой Flatten.

Я что-то пропустил?

1 Ответ

0 голосов
/ 09 июня 2018

Мне кажется, что вы смешиваете Sequential и Functional API.А как насчет model_seq.add(Flatten())?

...