Есть ли способ совместить две модели GRU и DropBlock? - PullRequest
1 голос
/ 07 июня 2019

Объедините две модели DropBlock (dimesnions = 4) и CuDNNGRU (размерность = 3) для классификации изображений MNIST. Как я могу комбинировать различные размеры моделей Drop Block и GRU?

GRU в основном используется для классификации документов, но здесь я пытаюсь классифицировать набор данных MNIST. Обе модели по отдельности набирают ~ 98%. Я хочу объединить обе модели DropBlock и GRU в одну модель классификации.

Коды объединения моделей DropBlock и GRU для классификации MNIST.

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train/255.0
x_test = x_test/255.0
print(x_train.shape)
print(x_train[0].shape)

#load the model
model = Sequential()
gru = Sequential()
gru.add(CuDNNGRU(128,input_shape=(x_train.shape[1:]), 
                             return_sequences=True))
gru.add(BatchNormalization())
gru.add(CuDNNGRU(128))
gru.add(BatchNormalization())
print(gru.output_shape)
drop = Sequential()
drop.add(DropBlock2D(input_shape=(28, 28, 1), block_size=7, 
                   keep_prob=0.8, name='Input-Dropout'))
drop.add(Conv2D(filters=64, kernel_size=3, activation='relu', 
                           padding='same', name='Conv-1'))
drop.add(MaxPool2D(pool_size=2, name='Pool-1'))
drop.add(DropBlock2D(block_size=5, keep_prob=0.8, name='Dropout-1'))
drop.add(Conv2D(filters=32, kernel_size=3, activation='relu', 
padding='same', name='Conv-2'))
drop.add(MaxPool2D(pool_size=2, name='Pool-2'))
print(drop.output_shape)

model.add(merge([drop, gru], mode='concat', concat_axis=2))
print(model.output_shape)
model.add(Flatten(name='Flatten'))
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))
score = model.evaluate(x_test, y_test, verbose=0)

Ожидаемый результат ~ 98% результатов по этой классификационной модели.

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