Как исправить проблему формы ввода TimeDistributed (необходимо 5 измерений) - PullRequest
0 голосов
/ 14 апреля 2019

Я пытаюсь создать модель распознавания действий человека. Но когда я пытаюсь добавить функцию TimeDistributed, у меня возникает проблема input_shape. Как я могу преобразовать input_shape из 4d в 5d?

Я хочу тренировать свой набор данных с каждыми 10 изображениями, чтобы понять действия.

Размер набора данных = (28000,90,90,1)

#define CNN model
cnn = Sequential()
cnn.add(Conv2D(filters=32,kernel_size= 
(5,5),padding="Same",activation="relu",input_shape=(90,90,1)))
cnn.add(MaxPooling2D(pool_size=(2,2)))
cnn.add(Dropout(0.25))

cnn.add(Conv2D(filters=16,kernel_size=(5,5),padding="Same",activation="relu"))
cnn.add(MaxPooling2D(pool_size=(2,2)))
cnn.add(Dropout(0.25))

cnn.add(Conv2D(filters=32,kernel_size=(5,5),padding="Same",activation="relu"))
cnn.add(MaxPooling2D(pool_size=(2,2)))
cnn.add(Dropout(0.25))

cnn.add(Flatten())
cnn.add(Dense(4096, activation="relu"))

#define LSTM model
model = Sequential()
model.add(TimeDistributed(cnn,input_shape=(10,90,90,1)))
model.add(LSTM(10))
model.add(Dense(2, activation="softmax"))

verbose, epochs, batch_size = 0, 25, 64
optimizer=Adam(lr=0.001,beta_1=0.9,beta_2=0.999)
model.compile(optimizer=optimizer,loss="binary_crossentropy",metrics=["accuracy"])
model.fit(x_train, y_train,validation_data=(x_val,y_val), epochs=epochs, batch_size=batch_size)

Здесь ошибка: ValueError: Ошибка при проверке ввода: ожидалось, что time_distributed_8_input будет иметь 5 измерений, но получит массив с формой (28000, 90, 90)

1 Ответ

0 голосов
/ 07 мая 2019

У меня была такая же проблема.Я использую Tensorflow.keras из альфа TensorFlow 2.0.Мои входные данные были сформированы следующим образом: (list, list, numpy.ndarray, numpy.ndarray, numpy.ndarray), соответствующий number of records in batch, number of timesteps, img_width, img_height, channels.

Оказывается, код проверки формы ввода Tensorflow фактически пропускает случай, когда форма ввода данной записи построена изlist, содержащий numpy arrays, а размер list удаляется.Он обрабатывает практически все остальные данные.

Я локально изменил код библиотеки Tensorflow, чтобы исправить его, и сообщил об исправлении (https://github.com/tensorflow/tensorflow/issues/28323,, которое я надеюсь исправить и отправить на TF на этой неделе).

Тем не менее, я думаю, что если вы измените свой входной набор данных в форму, состоящую из (list, numpy.ndarray, numpy.ndarray, numpy.ndarray, numpy.ndarray), это может решить вашу проблему.

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