archs.py 文件源码

python
阅读 23 收藏 0 点赞 0 评论 0

项目:kaggle-dstl-satellite-imagery-feature-detection 作者: alno 项目源码 文件源码
def dnet1_mi(input_shapes, n_classes):
    def concat(xs):
        if len(xs) == 1:
            return xs[0]

        return merge(xs, mode='concat', concat_axis=1)

    def conv(k, s, x):
        return Convolution2D(k, s, s, border_mode='same', init='he_normal')(x)

    def dense_block(k, n, inp, append=False):
        outputs = [inp] if append else []

        for i in xrange(n):
            x = Convolution2D(k, 3, 3, border_mode='same', init='he_normal')(inp)
            x = BatchNormalization(axis=1, mode=0)(x)
            x = PReLU(shared_axes=[2, 3])(x)

            outputs.append(x)
            inp = concat([inp, x])

        return concat(outputs)

    def down_block(x):
        return MaxPooling2D((2, 2))(x)

    def up_block(x):
        return UpSampling2D(size=(2, 2))(x)

    inputs = dict([(name, Input(shape, name=name)) for name, shape in input_shapes.items()])

    # Downpath
    d0 = conv(32, 1, concat([inputs['in_I'], inputs['in_IF']]))

    c1 = dense_block(16, 2, d0, append=True)
    d1 = down_block(c1)

    c2 = dense_block(16, 3, d1, append=True)
    d2 = down_block(c2)

    c3 = dense_block(16, 4, concat([d2, inputs['in_M'], inputs['in_MI']]), append=True)
    d3 = down_block(c3)

    c4 = dense_block(16, 5, d3, append=True)
    d4 = down_block(c4)

    # Bottleneck
    c5 = dense_block(16, 6, d4, append=True)

    # Uppath
    u4 = dense_block(16, 10, concat([c4, up_block(c5)]))
    u3 = dense_block(16,  8, concat([c3, up_block(u4)]))
    u2 = dense_block(16,  6, concat([c2, up_block(u3)]))
    u1 = dense_block(16,  4, concat([c1, up_block(u2)]))

    out = Activation('sigmoid')(conv(n_classes, 1, u1))

    return Model(input=inputs.values(), output=out)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号