Как повысить производительность архитектуры Mixed Autoencoder? - PullRequest
0 голосов
/ 19 марта 2019

У меня есть данные формы (93,32), и я хочу сжать их с помощью автоматического кодера с плотным слоем узкого места. Я как-то пытаюсь встроить пространственную информацию только в одно измерение. Я могу разработать простой полностью подключенный автоэнкодер, но когда он включает слои Conv2D, я немного запутываюсь в его части. Ниже приведен мой код, и потери не уменьшаются после 50 эпох, а реконструкция даже близко не к входу. Было бы очень хорошо, если бы вы могли указать на проблему в моей архитектуре. Я использую Лакирелу, потому что мои данные имеют отрицательные значения ..

model = Sequential()

model.add(Conv2D(filters=30,kernel_size= (93,3),strides=(1, 1),input_shape=(93,32,1),kernel_initializer='VarianceScaling')) # VarianceScaling
model.add(BatchNormalization()) 
model.add(LeakyReLU(alpha=0.7))

model.add(MaxPooling2D(pool_size=(1,4), strides=(1,3), padding='valid')) #padding='valid'
model.add(Flatten()) 


model.add(Dense(150,kernel_initializer='VarianceScaling'))
model.add(BatchNormalization())
model.add(LeakyReLU(alpha=0.7))

model.add(Dense(40,kernel_initializer='VarianceScaling'))
model.add(BatchNormalization())
model.add(LeakyReLU(alpha=0.7))

model.add(Dense(150,kernel_initializer='VarianceScaling'))
model.add(BatchNormalization())
model.add(LeakyReLU(alpha=0.7))


model.add(Dense(270,kernel_initializer='VarianceScaling'))
model.add(BatchNormalization())
model.add(LeakyReLU(alpha=0.7))


model.add(Reshape((1,9,30)))

model.add(UpSampling2D((93,4)))


model.add(Conv2D(filters=1,kernel_size= (1,1),strides=(1, 1),kernel_initializer='VarianceScaling'))
model.add(LeakyReLU(alpha=0.7))

model.add(Cropping2D(cropping=((0,0),(0,4))))

Я использую простые «среднеквадратичные ошибки» в качестве функции потерь. Проблема где-то в части декодера. Спасибо за ваше время:)

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