繁体   English   中英

在python中重新创建Relu函数

[英]Recreate Relu function in python

我已经使用relu函数训练了一个带有tensorflow的神经网络,然后我尝试使用tensorflow中的权重重建python中的神经网络,但是当我将relu函数应用于np.dot(输入,权重)时,输出它不是如果我将它与tensorflow的输出进行比较则相同。 可能它取决于数字精度,事实上如果我使用

def relu(x):
   return max(0,x)

我得到一个结果,例如0.00213,如果我使用

def relu(x):
   return max(0.000,x)

我得到了与前一个不同的结果。 我的问题是如何实现relu函数,因为tensorflow呢?

这应该对你有所帮助。

# Numpy relu
X = np.random.rand(5, 10).astype(np.float32)
W_np = np.random.rand(10, 7).astype(np.float32)
np_relu = np.maximum(np.matmul(X, W_np), 0)
# Tensorflow relu
W_tf = tf.get_variable(initializer=tf.constant_initializer(W_np), shape=[10, 7], name="W_tf")
tf_relu = tf.nn.relu(tf.matmul(X, W_np))
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    np.testing.assert_array_almost_equal(sess.run(tf_relu), np_relu)

如您所见,断言成功,这意味着数组是相等的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM