我想在 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 循环这样的简单方法来计算所有传入张量元素的乘积,但没有成功,因为我无法想象一种以正确方式访问张量的方法。选择正确的指标是不可能的(?),因为我不知道当前步骤,因此不知道要处理的正确张量?
我想将此作为“激活函数”进行测试(更确切地说是优化/拟合过程)
如果需要更多信息来帮助解决此问题,请告诉我。