Ошибка значения регрессора Keras ConvLSTM в плотном слое - PullRequest
0 голосов
/ 18 июня 2020

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

def generate_arrays(arrays=None, targets=None):
    from random import shuffle
    while True:
        available_ids = list(range(len(arrays)))
        shuffle(available_ids)
        for i in available_ids:

            frames = []
            for image in arrays[i]:
                # load the image
                img = Image.open(image_path + image)
                # convert image to numpy array
                img = np.asarray(img) / 255
                height = 220
                width = 220
                dim = (width, height)
                img = cv2.resize(img, dim, interpolation=cv2.INTER_LINEAR)
                # add to bigger np array
                frames.append(img)
            frames = np.array(frames)

            frames = frames.reshape(-1, 3, 220, 220, 3)

            target = targets[i]
            yield (frames, category)

def build_model(frames=seq_len, channels=3, pixels_x=220, pixels_y=220):
    model = Sequential()
    model.add(
        ConvLSTM2D(filters=10
                   , kernel_size=(2,2)
                   , data_format='channels_last'
                   , return_sequences = False
                   , activation='relu', input_shape=(frames, pixels_x, pixels_y, channels))
                )
    model.add(Dropout(0.5))
    model.add(Flatten())
    model.add(Dense(100, activation='relu'))
    model.add(Dense(1, activation='linear'))

    optimizer = tf.keras.optimizers.RMSprop(0.001)

    model.compile(    
        loss = "mse",
        optimizer = optimizer,
        metrics=['mae', 'mse'])

    return model

def evaluate_model(train_x, train_y, test_x, test_y):
    # define model
    model = build_model()
    model.summary()
    # fit network
    model.fit_generator(
        generate_arrays(train_x, train_y)
        , steps_per_epoch = len(train_x)

        , validation_data = generate_arrays(test_x, test_y)
        , validation_steps = len(test_x)

        , epochs = 100
        , verbose = 1
        , shuffle = False
        , initial_epoch = 0
        )

Краткое описание модели выглядит так:

enter image description here

Теперь ошибка, которую я получаю, похоже, является общей ошибкой c значения, что означает, что что-то передается неправильно, но я не могу понять, что это ...

ValueError: Ошибка при проверке цели: ожидалось, что плотный_47 будет иметь 2 измерения, но получил массив с shape ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...