使用keras在CNN中创建一个特殊图层

时间:2017-03-19 04:14:03

标签: deep-learning

我的CNN架构如下: click here to see it 其中存在一个层,其输入等于它之前16层输出的总和(见图)。如何创建此图层?

1 个答案:

答案 0 :(得分:0)

我想这是你想要实现的架构的一部分:

| RELU |  -- > | RELU |  --> |  RELU | -->  | RELU |
    |              |              |             |        
    |              |              |             |     
    ----------------> | RELU | <-----------------                

假设你有一个(32,32)张量来自前一层。 并且您正在使用功能API。

# no non-linearity in the Dense layers 
# so you  can apply it in the next node in the graph.
d1 = Dense(32, 32, activation='linear'))(previous-layer)
r1 = LeakyReLU((32,)))(d1)
d2 = Dense(32, 32, activation='linear'))(r1)
r2 = LeakyReLU((32,)))(d2)
d3 = Dense(32, 32, activation='linear'))(r2)
r3 = LeakyReLU((32,)))(d3)
d4 = Dense(32, 32, activation='linear'))(r3)
r4 = LeakyReLU((32,)))(r4)

假设你真的想要添加张量,那么keras.layers.add()会做

adder = add([r1, r2, r3, r4])
d5 = Dense((32, 32), activation="linear")(adder)
r5 = SReLu((32,))(d5)

如果您想要连接沿着列使用的图层 keras.layers.concatenate()

concat = concatenate([r1, r2, r3, r4])
d5 = Dense((32, 32), activation="linear")(concat)
r5 = SReLu((32,))(d5)

尝试两者并看到哪种方法更适合您的问题,没有错。