in utils.py [0:0]
def get_weight(
name,
shape,
gain=np.sqrt(2),
use_wscale=False,
fan_in=None,
spec_norm=False,
zero=False,
fc=False):
if fan_in is None:
fan_in = np.prod(shape[:-1])
std = gain / np.sqrt(fan_in) # He init
if use_wscale:
wscale = tf.constant(np.float32(std), name=name + 'wscale')
var = tf.get_variable(
name + 'weight',
shape=shape,
initializer=tf.initializers.random_normal()) * wscale
elif spec_norm:
if zero:
var = tf.get_variable(
shape=shape,
name=name + 'weight',
initializer=tf.initializers.random_normal(
stddev=1e-10))
var = spectral_normed_weight(var, name, lower_bound=True, fc=fc)
else:
var = tf.get_variable(
name + 'weight',
shape=shape,
initializer=tf.initializers.random_normal())
var = spectral_normed_weight(var, name, fc=fc)
else:
if zero:
var = tf.get_variable(
name + 'weight',
shape=shape,
initializer=tf.initializers.zero())
else:
var = tf.get_variable(
name + 'weight',
shape=shape,
initializer=tf.contrib.layers.xavier_initializer(
dtype=tf.float32))
return var