0

我想在 tensorflow 中定义一个运算,计算如下:

在此处输入图像描述

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

(我猜)所有输入的乘积会导致麻烦。这是我尝试部署的一个版本,但没有成功。# 输入 X = tf.placeholder(tf.float32, [None, 2], name="X") Y = tf.placeholder(tf.float32, [None, 1], name="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运行完整脚本 会导致错误消息:

文件“h2o_test_opti.py”,第 13 行,在 productLayer = tf.contrib.keras.layers.multiply(powered) ValueError:应在输入列表上调用合并层。

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

我想将此作为“激活函数”进行测试(更确切地说是优化/拟合过程)

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

4

1 回答 1

0

我通过更改找到了一个可行的解决方案:

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

至:

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

它应该工作。也许有人也可以使用它。

于 2017-07-26T12:57:42.673 回答