zoukankan      html  css  js  c++  java
  • tensorflow--conv函数

    #第一种yolo3中程序

    def convolutional(input_data, filters_shape, trainable, name, downsample=False, activate=True, bn=True):
    #卷积层名称
    with tf.variable_scope(name):
    #如果需要下采样
    if downsample:
    pad_h, pad_w = (filters_shape[0] - 2) // 2 + 1, (filters_shape[1] - 2) // 2 + 1
    paddings = tf.constant([[0, 0], [pad_h, pad_h], [pad_w, pad_w], [0, 0]])
    input_data = tf.pad(input_data, paddings, 'CONSTANT')
    strides = (1, 2, 2, 1)
    padding = 'VALID'
    else:
    strides = (1, 1, 1, 1)
    padding = "SAME"
    #定义一个变量
    weight = tf.get_variable(name='weight', dtype=tf.float32, trainable=True,
    shape=filters_shape, initializer=tf.random_normal_initializer(stddev=0.01))
    conv = tf.nn.conv2d(input=input_data, filter=weight, strides=strides, padding=padding)
    #如果归一化
    if bn:
    conv = tf.layers.batch_normalization(conv, beta_initializer=tf.zeros_initializer(),
    gamma_initializer=tf.ones_initializer(),
    moving_mean_initializer=tf.zeros_initializer(),
    moving_variance_initializer=tf.ones_initializer(), training=trainable)

    #如果不归一化
    else:
    bias = tf.get_variable(name='bias', shape=filters_shape[-1], trainable=True,
    dtype=tf.float32, initializer=tf.constant_initializer(0.0))
    conv = tf.nn.bias_add(conv, bias)

    if activate == True: conv = tf.nn.leaky_relu(conv, alpha=0.1)

    return conv

    input_data = common.convolutional(input_data, filters_shape=(3, 3,  3,  32), trainable=trainable, name='conv0')


    #第二种yolo1
    def _conv_layer(self, x, num_filters, filter_size, stride,scope):

    in_channels = x.get_shape().as_list()[-1]
    weight = tf.Variable(tf.truncated_normal([filter_size, filter_size,
    in_channels, num_filters], stddev=0.1),name='weights')
    bias = tf.Variable(tf.zeros([num_filters,]),name='biases')

    pad_size = filter_size // 2
    pad_mat = np.array([[0, 0], [pad_size, pad_size], [pad_size, pad_size], [0, 0]])
    x_pad = tf.pad(x, pad_mat)
    conv = tf.nn.conv2d(x_pad, weight, strides=[1, stride, stride, 1], padding="VALID",name=scope)
    output = self.leak_relu(tf.nn.bias_add(conv, bias))

    return output

    net = self._conv_layer(net,  512, 1, 1,'conv_22')
  • 相关阅读:
    Java 中的定时任务(一)
    超实用 Git 使用方式介绍
    TCP 建立连接为什么要握 3 次手?
    OSI、TCP、IP、UDP 这些都是啥??
    Java 中线程安全问题
    PlantUML——3.Graphviz的安装
    PlantUML——2.中文乱码及解决
    PlantUML——1.Hello
    maven实战系列
    NGUI优化之Drawcall
  • 原文地址:https://www.cnblogs.com/shuimuqingyang/p/10984944.html
Copyright © 2011-2022 走看看