1.Parametric_relu的TensorFlow实现
def parametric_relu(_x):
alphas = tf.get_variable('alpha',_x.get_shape()[ - 1 ],
初始值设定项 = tf.constant_initializer(0.0),
D型 = tf.float32)
pos = tf.nn.relu(_x)
neg = alphas *(_ x - abs(_x))* 0.5
返回 pos + neg
参考链接:HTTPS://stackoverflow.com/questions/39975676/how-to-implement-prelu-activation-in-tensorflow
2.批量归一化的TensorFlow实现
批量标准化原理:
bn = tf.contrib.layers.batch_norm(conv,center = True,scale = True,
衰减 = 0.9,is_training = is_train,
updates_collections = 无)
返回
3.遇到的问题:
在2中,如果将bn直接添加到推理中,测试会报错“NotFoundError: Key <variable_name>在检查点Tensorflow中找不到 ”。因为训练参数只在内存中,没有存到检查点文件中,知道怎么解决这个问题。
相关问题链接:https ://stackoverflow.com/questions/45179556/key-variable-name-not-found-in-checkpoint-tensorflow/45194315#45194315
但是,将BN直接写进之前定义的函数里(例如conv2d),就可以成功训练和测试了。