У объекта 'tuple' нет атрибута 'layer' Это проблема с версией keras? - PullRequest
0 голосов
/ 09 марта 2020

все. Я пытаюсь добавить слои в модель ResNet50, чтобы классифицировать между кошками и собаками, но у меня проблемы с выравниванием слоя. Я читал об аналогичных проблемах, говорящих, что это связано с несовпадением версий.

Версия Keras: 2.3.1

Версия Tensorflow: 2.0.0

Код ниже:

import numpy as np
import tensorflow as tf
from tensorflow import keras
from keras.applications.resnet50 import ResNet50
from keras.preprocessing import image
from keras.applications.resnet50 import preprocess_input, decode_predictions
from tensorflow.python.keras.layers import Flatten, Dense, Dropout
from tensorflow.python.keras.preprocessing.image import ImageDataGenerator

epochs = 20
length, height = 224, 224
batch_size = 32
steps = 1000
validation_steps = 300
filersConv1 = 32
filtersConv2 = 64
size_filter1 = (3, 3)
size_filter2 = (2, 2)
tamano_pool = (2, 2)
classes = 3
lr = 0.0004

Train_folder = r".\data\train1"
Test_folder =  r".\data\test1"

train_datagen = ImageDataGenerator(
    rescale = 1. / 255,
    shear_range = 0.2,
    zoom_range = 0.2,
    horizontal_flip = True)

test_datagen = ImageDataGenerator(rescale = 1. / 255)

train_generator = train_datagen.flow_from_directory(
    Train_folder,
    target_size=(length, height),
    batch_size=batch_size,
    class_mode='categorical')


test_generador = test_datagen.flow_from_directory(
    Test_folder,
    target_size = (length, height),
    batch_size = batch_size,
    class_mode='categorical')

resnet50_imagenet_model = ResNet50(include_top = False, weights = 'imagenet', input_tensor = None,
               input_shape = (length, height, 3))

x = resnet50_imagenet_model.output

flattened = Flatten()(x)
dense1 = Dense(1000, activation='relu')(flattened)
dropout = Dropout(0.5)(dense1)
dense2 = Dense(classes, activation='softmax')(dropout)


Ошибка следующая:

AttributeError                            Traceback (most recent call last)
<ipython-input-11-346fd34fb978> in <module>
----> 1 flattened = Flatten()(x)
      2 dense1 = Dense(1000, activation='relu')(flattened)
      3 dropout = Dropout(0.5)(dense1)
      4 dense2 = Dense(classes, activation='softmax')(dropout)
      5 
AttributeError: 'tuple' object has no attribute 'layer'
...