Tensorflow定义了构建所有张量组件产品的操作

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

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

(我猜)所有输入的产品都会造成麻烦。 这是我试图部署的一个版本,但没有成功。 #input 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运行完整脚本会导致错误消息:

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

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

我想测试它作为一个“激活功能”(正如更多的优化/验配程序)

请让我知道是否有更多的信息需要帮助解决这个问题。


我通过改变了我的想法找到了一个工作解决方案:

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

至:

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

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

链接地址: http://www.djcxy.com/p/32087.html

上一篇: Tensorflow define a operation that builds the product of all tensor components

下一篇: Tensorflow autoencoders with one vector per input neuron