使用slim轻量级库写FCN神经网络

在这里插入图片描述`import tensorflow as tf
import tensorflow.contrib.slim as slim

def FCN_net(inputs,num_classes,keep_prob=None):
nets = {}
with slim.arg_scope([slim.conv2d,slim.conv2d_transpose],padding = ‘SAME’,
weights_initializer=tf.truncated_normal_initializer(stddev=0.01),
weights_regularizer=slim.l2_regularizer(0.0005),
activation_fn=tf.nn.relu):
with slim.arg_scope([slim.conv2d_transpose],stride=2):#stride=2意味着2倍上采样
net = slim.conv2d(inputs,64,[3,3],scope=‘conv1_1’)
net = slim.conv2d(net,64,[3,3],scope=‘conv1_2’)
net = slim.max_pool2d(net,kernel_size=[2,2],scope=‘pool1’)
nets[‘poo11’] = net #1/2

        net = slim.conv2d(net,128,[3,3],scope='conv2_1')
        net = slim.conv2d(net,128,[3,3],scope='conv2_2')
        net = slim.max_pool2d(net,[2,2],scope='pool2')
        nets['poo12'] = net                                  #1/4
        
        net = slim.conv2d(net,256,[3,3],scope='conv3_1')
        net = slim.conv2d(net,256,[3,3],scope='conv3_2')
        net = slim.conv2d(net,256,[3,3],scope='conv3_3')
        net = slim.max_pool2d(net,[2,2],scope='pool3')
        nets['poo13'] = net                                 #1/8
        
        net = slim.conv2d(net,512,[3,3],scope='conv4_1')
        net = slim.conv2d(net,512,[3,3],scope='conv4_2')
        net = slim.conv2d(net,512,[3,3],scope='conv4_3')
        net = slim.max_pool2d(net,[2,2],scope='pool4')
        nets['poo14'] = net                                #1/16
        
        net = slim.conv2d(net,512,[3,3],scope='conv5_1')
        net = slim.conv2d(net,512,[3,3],scope='conv5_2')
        net = slim.conv2d(net,512,[3,3],scope='conv5_3')
        net = slim.max_pool2d(net,[2,2],scope='pool5') 
        nets['poo15'] = net                                #1/32
        
        net = slim.conv2d(net,4096,[7,7],scope='conv6')  
        
        net = slim.conv2d(net,4096,[1,1],scope='conv7')
        
        net = slim.conv2d(net,num_classes,[1,1],scope='conv8')
        
        # 开始反卷积对net
        deconv1_shape = nets['pool4'].get_shape()
        conv_t1 = slim.conv2d_transpose(net,deconv1_shape[3],[4,4])  #这里反卷积kernalsize{[4,4],[4,4],[16,16]尚不明白}
        fuse_1 = tf.add(conv_t1,nets['pool4'],name='fuse_1')    #1/16
        
        deconv2_shape = nets['pool3'].getshape()
        conv_t2 = slim.conv2d_transpose(fuse_1,deconv2_shape[3],[4,4])
        fuse_2 = tf.add(conv_t2,nets['pool3'],name='fuse_2')    #1/8
        
     
        conv_t3 = slim.conv2d_transpose(fuse_2,num_classes,[16,16],stride=8)
        pre=tf.argmax(conv_t3,axis=-1)
        pre=tf.expand_dims(pre,-1)#expand dim
return pre, conv_t3
        
        `
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值