我已经使用relu函数使用tensorflow训练了神经网络,然后我尝试使用tensorflow的权重在python中重建神经网络,但是当我将relu函数应用于np.dot(input,weight)时,将其输出如果我将其与tensorflow的输出进行比较是不一样的。 可能取决于数字精度,实际上,如果我使用
def relu(x):
return max(0,x)
如果使用
,我得到的结果例如为0.00213def relu(x):
return max(0.000,x)
与上一个相比,我得到了不同的结果。 我的问题是我如何像tensorflow一样实现relu函数?
答案 0 :(得分:0)
这应该对您有帮助。
# 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)
如您所见,断言成功,这意味着数组相等。