You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.6 KiB
52 lines
1.6 KiB
11 months ago
|
import tensorflow as tf
|
||
|
import yaml
|
||
|
|
||
|
def init_weights(shape, name):
|
||
|
return tf.get_variable(name, shape=shape, initializer=tf.contrib.layers.xavier_initializer())
|
||
|
|
||
|
|
||
|
def init_biases(shape):
|
||
|
return tf.Variable(tf.zeros(shape))
|
||
|
|
||
|
|
||
|
def threshold(x, val=0.5):
|
||
|
x = tf.clip_by_value(x, 0.5, 0.5001) - 0.5
|
||
|
x = tf.minimum(x * 10000, 1)
|
||
|
return x
|
||
|
|
||
|
|
||
|
def lrelu(x, leak=0.2, name=None):
|
||
|
return tf.maximum(x, leak * x, name=name)
|
||
|
|
||
|
|
||
|
def make_var(name, shape=None, initializer=None, trainable=True):
|
||
|
if shape is not None:
|
||
|
return tf.get_variable(name, shape, initializer=initializer, trainable=trainable)
|
||
|
else:
|
||
|
return tf.get_variable(name, initializer=initializer, trainable=trainable)
|
||
|
|
||
|
|
||
|
def exp_average_summary(ops, dep_ops, decay=0.9, name='avg', scope_pfix='', raw_pfix=' (raw)', avg_pfix=' (avg)'):
|
||
|
averages = tf.train.ExponentialMovingAverage(decay, name=name)
|
||
|
averages_op = averages.apply(ops)
|
||
|
|
||
|
for op in ops:
|
||
|
tf.summary.scalar(scope_pfix + op.name + raw_pfix, op)
|
||
|
tf.summary.scalar(scope_pfix + op.name + avg_pfix, averages.average(op))
|
||
|
|
||
|
with tf.control_dependencies([averages_op]):
|
||
|
for i, dep_op in enumerate(dep_ops):
|
||
|
dep_ops[i] = tf.identity(dep_op, name=dep_op.name.split(':')[0])
|
||
|
|
||
|
return dep_ops
|
||
|
|
||
|
|
||
|
def load_from_yml(file_path):
|
||
|
with open(file_path, 'r') as loadfile:
|
||
|
y = yaml.load(loadfile)
|
||
|
return y
|
||
|
|
||
|
def write_to_yml(data_dict, file_path):
|
||
|
with open(file_path, 'w') as outfile:
|
||
|
data_dict = dict(data_dict)
|
||
|
yaml.dump(data_dict, outfile, default_flow_style=False)
|