gpt4 book ai didi

python - Tensorflow 中的权重共享

转载 作者:太空宇宙 更新时间:2023-11-03 14:57:14 26 4
gpt4 key购买 nike

我正在尝试实现以下架构:Symmetric neural net layer

我正在传递串联输入

[x y] 

进入神经网络,第一层需要按照图像中建议的方式对称,该层中有 N_HIDDEN 神经元。我从以下设置开始:

input = tf.placeholder('float', [None, 2*NUM_FEATURES])
weights = tf.Variable(tf.random_uniform(shape=[2*NUM_FEATURES, N_HIDDEN], minval=-0.0001, maxval=0.0001, dtype=tf.float32))

hidden = tf.matmul(input,weights)

但是,上面的代码并不像图像所示的那样对称。如果我将权重设置为大小的一半,那么我必须分别乘以输入 x 和 y。

weights = tf.Variable(tf.random_uniform(shape=[NUM_FEATURES, N_HIDDEN], minval=-0.0001, maxval=0.0001, dtype=tf.float32))

tensorflow 中共享x_k和y_k神经元的方法是什么?

最佳答案

我不确定 Tensorflow 如何实现像你这样的神经网络是否存在误解。正如图像中所示,神经元没有明确的定义。 h_ih_i' 表示为操作。
在您的情况下,您可以将每个 h 视为 x1 * v_x1 + x2 * v_x2 + ...y1 * v_y1 + y2 * v_y2 + 的总和...b

在代码中它可以实现为:

input_x = tf.placeholder('float', [None, NUM_FEATURES])
input_y = tf.placeholder('float', [None, NUM_FEATURES])

weights_x = tf.Variable(tf.random_uniform(shape=[NUM_FEATURES, N_HIDDEN], dtype=tf.float32)) # v_x
weights_y = tf.Variable(tf.random_uniform(shape=[NUM_FEATURES, N_HIDDEN], dtype=tf.float32)) # v_y
bias = tf.Variable(tf.random_uniform(shape=[N_HIDDEN], dtype=tf.float32))

hidden_x = tf.matmul(input_x, weights_x)
hidden_y = tf.matmul(input_y, weights_y)

h = tf.add(hidden_x, hidden_y)
h = tf.add(h, bias)

batch_size = 5
x = np.random.normal(size = [batch_size, NUM_FEATURES])
y = np.random.normal(size = [batch_size, NUM_FEATURES])

session = tf.InteractiveSession()
session.run(tf.global_variables_initializer())

session.run(h, feed_dict = {input_x : x, input_y : y})


每当运行h节点时,就等于计算图像中的所有h_i
因此,无需连接数据以使其对称。
对不同类型的输入使用两个单独的占位符将使您更容易理解网络的工作原理。而且重量也可以分开。在您的图像中,它们也有不同的标签:v_xv_y

希望对您有所帮助!

关于python - Tensorflow 中的权重共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45438403/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com