Tensorflow 定义了一个构建所有张量组件乘积的操作

Tensorflow define a operation that builds the product of all tensor components

我想在 tensorflow 中定义一个计算如下的操作:

x 由张量提供。最后,应该将操作与已知值进行比较,并且应该学习参数 alpha、beta i 和 b。

(我猜)所有输入的乘积造成了麻烦。这是我尝试部署的一个版本,但没有成功。 # 输入 X = tf.placeholder(tf.float32, [None, 2], 名称="X") Y = tf.placeholder(tf.float32, [None, 1], 名称="Y")

# hidden
beta = tf.get_variable("beta", shape=[2], initializer=tf.contrib.layers.xavier_initializer())
powered = tf.pow(X,beta)
productLayer = tf.contrib.keras.layers.multiply(powered) # bad line

# output
w_o = tf.get_variable("w_o", shape=[1], initializer=tf.contrib.layers.xavier_initializer())
b_o = tf.get_variable("bias", shape=[1], initializer=tf.zeros([1]))

output = tf.add(tf.matmul(productLayer,w_o), b_o)
loss = tf.reduce_sum(tf.square(output - Y)) # tf.nn.l2_loss(yhat - Y)

运行 来自 gist 的完整脚本 https://gist.github.com/anonymous/c17d45b4e997bfccb5275dffa44512d6 导致错误消息:

File "h2o_test_opti.py", line 13, in productLayer = tf.contrib.keras.layers.multiply(powered) ValueError: A merge layer should be called on a list of inputs.

我认为 tf.contrib.keras.layers.multiply 的功能描述符合我的需要。我还试图找到一种像 for 循环这样的天真方法来计算所有传入张量元素的乘积,但没有成功,因为我无法想象以正确方式访问张量的方法。选择正确的指标是不可能的(?),因为我不知道当前步骤,因此不知道要处理的正确张量?

我想将其作为 "activation-function" 进行测试(更确切地说是 optimization/fitting 过程)

如果需要更多信息来帮助解决此问题,请告诉我。

我找到了一个可行的解决方案 变化:

    productLayer = tf.contrib.keras.layers.multiply(powered) # bad line

至:

    productLayer = tf.reshape(tf.reduce_prod(X,1), (-1,1))

应该可以。也许有人也可以用这个。