我想使用tensorflow训练模型。
我有以下变量,我希望模型能够学习它
Mj=tf.get_variable('Mj_',dtype=tf.float32, shape=[500,4],initializer=tf.random_uniform_initializer(maxval=1, minval=0))
我希望Mj的结果值介于0和1之间。如何添加此约束?
答案 0 :(得分:0)
我认为您正在寻找的功能是print "abc" in ("abc d","ab")
。
链接到Docs。
答案 1 :(得分:0)
执行此操作的正确方法是将剪切函数tf.clip_by_value
作为constraint
参数传递给tf.Variable
构造函数:
Mj=tf.get_variable('Mj_',
dtype=tf.float32,
shape=[500,4],
initializer=tf.random_uniform_initializer(maxval=1, minval=0),
constraint=lambda t: tf.clip_by_value(t, 0, 1))
来自tf.Variable
的文档:
约束:一个可选的投影函数应用于 由优化器更新后的变量(例如用于实现 层权重的范数约束或值约束)。功能 必须将表示值的未投影张量作为输入 变量并返回Tensor的预计值(必须 具有相同的形状)。在做的时候使用约束是不安全的 异步分布式培训。
或者您可以考虑在变量之上添加非线性tf.sigmoid
。
Mj=tf.get_variable('Mj_',dtype=tf.float32, shape=[500,4])
Mj_out=tf.sigmoid(Mj)
这会将您的变量转换为0到1之间的范围。详细了解激活函数here。