#python #tensorflow #deep-learning #neural-network #reshape
Вопрос:
Я хотел бы преобразовать массив размеров 898 x 699 в ожидаемый shape=(None, 898, 699, 1)
, который требуется сверточной нейронной сетью (CNN). Я попытался использовать команду np.expand_dims(model, axis=-1)
, но когда я передаю ее результат в CNN, она возвращает это сообщение об ошибке.
Ошибка значения: Ввод 0 несовместим с моделью слоя_8: ожидаемая форма=(Нет, 898, 699, 1), найденная форма=(Нет, 699, 1)
Как я могу это исправить?
Это мое краткое описание модели
Model: "model_8" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= input_12 (InputLayer) [(None, 898, 699, 1)] 0 _________________________________________________________________ conv2d_29 (Conv2D) (None, 898, 699, 32) 320 _________________________________________________________________ max_pooling2d_17 (MaxPooling (None, 449, 350, 32) 0 _________________________________________________________________ conv2d_30 (Conv2D) (None, 449, 350, 32) 9248 _________________________________________________________________ max_pooling2d_18 (MaxPooling (None, 225, 175, 32) 0 _________________________________________________________________ conv2d_transpose_18 (Conv2DT (None, 450, 350, 32) 9248 _________________________________________________________________ conv2d_transpose_19 (Conv2DT (None, 900, 700, 32) 9248 _________________________________________________________________ conv2d_31 (Conv2D) (None, 900, 700, 1) 289 ================================================================= Total params: 28,353 Trainable params: 28,353 Non-trainable params: 0 _________________________________________________________________
Ответ №1:
Ваш входной слой не имеет формы, совместимой с данными, которые вы передаете в модель. Образцы данных имеют размер (Нет, 699, 1) (где Нет измерения пакета). Возможно, вы не имеете в виду, что ваше первое измерение должно быть размером пакета (я вижу, что вы тоже хотите размер 899). Поэтому, если вы используете наборы данных TF, вы можете сделать что-то вроде:
dataset = dataset.batch(1)
Это добавит новое измерение в набор данных, и у вас будет форма набора данных (Нет, 899, 699,1), которая совместима с вашей входной формой.
Комментарии:
1. Я использую массив numpy, а не набор данных TF. Как я могу достичь этой формы (Нет, 899, 699, 1) с помощью numpy?
2. Тогда вы могли бы сделать что-то вроде: x= x[np.newaxis, :] и y = y[np.newaxis, :]. Где x и y-ваши массивы numpy для ввода и вывода соответственно