Почему мне нужно преобразовать мои входные данные в дополнительное измерение для Conv2D? - PullRequest
1 голос
/ 30 октября 2019

Я новичок в tenorflow, у меня есть вводные данные этого формата:

x_train_n.shape = (200,64,2048)

, что означает 200 наборов обучающих данных64 - это H, а 2048 - это W

Когда я хочу передать этот вход в свою сеть, сначала мне нужно изменить его:

x_train_n = x_train_n.reshape(x_train_n.shape[0], 1, rows, cols)

Затем

inputs = Input(shape=x_train_n.shape[1:])

output1 = Conv2D(32, (3, 15), strides=(1, 2), padding='same', data_format='channels_first', input_shape=x_train_n.shape[1:])(inputs) 

в противном случае я получаю сообщение об ошибке, что Conv2d должен иметь 4 измерения, но измерение - это 3 ошибки.

Правильно ли это делать? если это так, то почему это имеет смысл?

Почему я не могу сделать следующее без изменения формы?

output1 = Conv2D(32, (3, 15), strides=(1, 2), padding='same', data_format='channels_first', input_shape=x_train_n.shape())(inputs)

Ответы [ 3 ]

2 голосов
/ 30 октября 2019

Да, это правильно.

Conv2D слои применяются к 2D-данным. 2D-данные могут иметь несколько каналов. В вашем случае число каналов равно 1. Из-за этого Conv2D предназначен для применения в нескольких каналах, вам нужно добавить это дополнительное измерение, указывающее, сколько каналов имеют ваши данные (1 канал в вашем случае)

2 голосов
/ 30 октября 2019

Conv2D ожидает 4 правильных размера, это: (BatchSize, Channel, Width, Height).

Для цветных изображений у вас обычно есть 3 канала RGB для интенсивности цвета, для изображений в градациях серого только один.

2 голосов
/ 30 октября 2019

Это имеет смысл. Сверточные слои требуют нескольких входных каналов. Для изображения RBG это число равно 3. Для некоторых данных (например, для изображений в градациях серого или, по-видимому, для любых данных, которые у вас есть), количество каналов равно 1. Однако этот канал по-прежнему должен явно присутствовать - его просто нельзяподразумевается.

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