赞
踩
第一个文件是用于定义网络中需要使用的各种参数关于卷积和反置卷积相关的图像
详细信息可以参考github上的DCGAN中如何设置模型
- import math
- import numpy as np
- import tensorflow as tf
-
- from tensorflow.python.framework import ops
-
- from utils import *
-
- if "concat_v2" in dir(tf):
- def concat(tensors, axis, *args, **kwargs):
- return tf.concat_v2(tensors, axis, *args, **kwargs)
- else:
- def concat(tensors, axis, *args, **kwargs):
- return tf.concat(tensors, axis, *args, **kwargs)
-
- def bn(x, is_training, scope):
- return tf.contrib.layers.batch_norm(x,
- decay=0.9,
- updates_collections=None,
- epsilon=1e-5,
- scale=True,
- is_training=is_training,
- scope=scope)
-
- def conv_out_size_same(size, stride):
- return int(math.ceil(float(size) / float(stride)))
-
- def conv_cond_concat(x, y):
- """Concatenate conditioning vector on feature map axis."""
- x_shapes = x.get_shape()
- y_shapes = y.get_shape()
- return concat([x, y*tf.ones([x_shapes[0], x_shapes[1], x_shapes[2], y_shapes[3]])], 3)
-
- def conv2d(input_, output_dim, k_h=5, k_w=5, d_h=2, d_w=2, stddev=0.02, name="conv2d"):
- with tf.variable_scope(name):
- w = tf.get_variable('w', [k_h, k_w, input_.get_shape()[-1], output_dim],
- initializer=tf.truncated_normal_initializer(stddev=stddev))
- conv = tf.nn.conv2d(input_, w, strides=[1, d_h, d_w, 1], padding='SAME')
-
- biases = tf.get_variable('biases', [output_dim], initializer=tf.constant_initializer(0.0))
- conv = tf.reshape(tf.nn.bias_add(conv, biases), conv.get_shape())
-
- return conv
-
- def deconv2d(input_, output_shape, k_h=5, k_w=5, d_h=2, d_w=2, name="deconv2d", stddev=0.02, with_w=False):
- with tf.variable_scope(name):
- # filter : [height, width, output_channels, in_channels]
- w = tf.get_variable('w', [k_h, k_w, output_shape[-1], input_.get_shape()[-1]],
- initializer=tf.random_normal_initializer(stddev=stddev))
-
- try:
- deconv = tf.nn.conv2d_transpose(input_, w, output_shape=output_shape, strides=[1, d_h, d_w, 1])
-
- # Support for verisons of TensorFlow before 0.7.0
- except AttributeError:
- deconv = tf.nn.deconv2d(input_, w, output_shape=output_shape, strides=[1, d_h, d_w, 1])
-
- biases = tf.get_variable('biases', [output_shape[-1]], initializer=tf.constant_initializer(0.0))
- deconv = tf.reshape(tf.nn.bias_add(deconv, biases), deconv.get_shape())
-
- if with_w:
- return deconv, w, biases
- else:
- return deconv
-
- def lrelu(x, leak=0.2, name="lrelu"):
- return tf.maximum(x, leak*x)
-
- def linear(input_, output_size, scope=None, stddev=0.02, bias_start=0.0, with_w=False):
- shape = input_.get_shape().as_list()
-
- with tf.variable_scope(scope or "Linear"):
- matrix = tf.get_variable("Matrix", [shape[1], output_size], tf.float32,
- tf.random_normal_initializer(stddev=stddev))
- bias = tf.get_variable("bias", [output_size],
- initializer=tf.constant_initializer(bias_start))
- if with_w:
- return tf.matmul(input_, matrix) + bias, matrix, bias
- else:
- return tf.matmul(input_, matrix) + bias

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。