tensorflow二分类问题网络搭建(3)

网络很奇怪,主要是学习操作

import keras.backend as K
from keras.layers import Input, Conv2D, BatchNormalization, MaxPooling2D,merge
from keras.models import Model
def build_model():
    kernel = 3

    # 分类网络模型构建【自由发挥 网络很怪,卷积+并联空洞卷积+相当于全连接作用的卷积】
    input_tensor = Input(shape=(64, 64, 3))
    x = Conv2D(64, (kernel, kernel), activation='relu', padding='same', name='conv1_1', kernel_initializer='he_normal',
               bias_initializer='zeros')(input_tensor)
    x = BatchNormalization()(x)
    x = Conv2D(64, (kernel, kernel), activation='relu', padding='same', name='conv1_2', kernel_initializer='he_normal',
               bias_initializer='zeros')(x)
    x = BatchNormalization()(x)

    x = MaxPooling2D((2, 2), strides=(2, 2))(x)

    x = Conv2D(128, (kernel, kernel), activation='relu', padding='same', name='conv2_1', kernel_initializer='he_normal',
               bias_initializer='zeros')(x)
    x = BatchNormalization()(x)
    x = Conv2D(128, (kernel, kernel), activation='relu', padding='same', name='conv2_2', kernel_initializer='he_normal',
               bias_initializer='zeros')(x)
    x = BatchNormalization()(x)

    x = MaxPooling2D((2, 2), strides=(2, 2))(x)

    x = Conv2D(256, (kernel, kernel), activation='relu', padding='same', name='conv3_1', kernel_initializer='he_normal',
               bias_initializer='zeros')(x)
    x = BatchNormalization()(x)
    x = Conv2D(256, (kernel, kernel), activation='relu', padding='same', name='conv3_2', kernel_initializer='he_normal',
               bias_initializer='zeros')(x)
    x = BatchNormalization()(x)
    x = Conv2D(256, (kernel, kernel), activation='relu', padding='same', name='conv3_3', kernel_initializer='he_normal',
               bias_initializer='zeros')(x)
    x = BatchNormalization()(x)

    x = MaxPooling2D((2, 2), strides=(2, 2))(x)
    # 空洞卷积
    x1 = Conv2D(256, (kernel, kernel), activation='relu', padding='same',dilation_rate=(2, 2), name='conv4_1', kernel_initializer='he_normal',
               bias_initializer='zeros')(x)
    x1_1 = BatchNormalization()(x1)
    x2 = Conv2D(256, (kernel, kernel), activation='relu', padding='same',dilation_rate=(6, 6),name='conv4_2', kernel_initializer='he_normal',
               bias_initializer='zeros')(x)
    x2_1 = BatchNormalization()(x2)
    x3 = Conv2D(256, (kernel, kernel), activation='relu', padding='same', dilation_rate=(12, 12),name='conv4_3', kernel_initializer='he_normal',
               bias_initializer='zeros')(x)
    x3_1 = BatchNormalization()(x3)

    x_s= merge.concatenate([x1_1,x2_1,x3_1],axis = 3)
    # 特征按照第三维度通道进行融合  把3个256通道的特征图进行融合
    x = MaxPooling2D((8, 8), strides=(1, 1))(x_s)

    x = Conv2D(1024, (1, 1), activation='relu', padding='valid', name='fc5', kernel_initializer='he_normal',
               bias_initializer='zeros')(x)
    x = BatchNormalization()(x)
    x = Conv2D(1024, (1, 1), activation='relu', padding='valid', name='fc6', kernel_initializer='he_normal',
               bias_initializer='zeros')(x)
    x = BatchNormalization()(x)
    outputs = Conv2D(2, (1, 1), activation='softmax', padding='valid', name='fc7', kernel_initializer='he_normal',
               bias_initializer='zeros')(x)

    model = Model(inputs=input_tensor, outputs=outputs, name="selfmodel")

    return model
if __name__ == '__main__':
    encoder_model = build_model()
    print(encoder_model.summary())
    
    K.clear_session()
    # 清空之前model占用的内存

网络模型
给博主点赞呦!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值