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))
应该可以。也许有人也可以用这个。
我想在 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))
应该可以。也许有人也可以用这个。