Tensorflow:在占位符中引入不同大小的矩阵

Posted

技术标签:

【中文标题】Tensorflow:在占位符中引入不同大小的矩阵【英文标题】:Tensorflow: introducing a matrix of different size in a placeholder 【发布时间】:2016-10-02 08:06:33 【问题描述】:

我正在尝试使用矩阵乘法的张量流进行简单的操作,但我必须使用其列的可变大小的矩阵(如下例所示)

import tensorflow as tf

input1 = tf.placeholder("float", [None,None]) 
    input2 = tf.placeholder(tf.float32) 
    output = tf.mul(input1, input2)

with tf.Session() as sess:   
    print(sess.run([output], feed_dict=input1:[[1,2],[3,4,5]], input2:[2.]))

问题是,一旦我这样做了,我会收到一条错误消息告诉我:

ValueError: 使用序列设置数组元素。

我知道这很容易解决,在第一行添加任何数字或 None(以产生 mxn 形状),但是我想为实验训练更大的数据,我不确定 0 是否会影响数据或不是。

【问题讨论】:

如果你想让input2也是一个矩阵,你应该写:input2 = tf.placeholder(tf.float32, [None, None]) 谢谢,但实际上我不希望那个变成矩阵,我主要指的是 input1 的可变大小,目前 Tensorflow 无法轻松操作它,但无论如何谢谢。跨度> 【参考方案1】:

tf.placeholder() 操作为密集张量定义了一个占位符,因此您必须定义您尝试提供的值中的所有元素。

另一种方法(在最新版本的 TensorFlow 中,如果您从源代码构建或下载每晚发布的版本可用)是使用 tf.sparse_placeholder() 操作,它允许您使用 tf.SparseTensorValue 提供 tf.SparseTensor。这允许您表示一个对象,其中并未定义所有元素,但未定义的元素被解释为零。

请注意,TensorFlow 对稀疏数据和可变大小示例的支持仍处于初步阶段,并且大多数操作(如 tf.mul())目前仅针对密集张量定义。我们用于可变大小图像数据的另一种方法是在input pipeline 中一次处理一个(可变大小)记录,然后将其转换为恒定形状,然后使用batching functions 制作一个单个密集批次。

【讨论】:

谢谢,这是我一直在寻找的一个很好的答案。您能否向我解释一下有关替代方法的更多信息?我认为工作会很酷

以上是关于Tensorflow:在占位符中引入不同大小的矩阵的主要内容,如果未能解决你的问题,请参考以下文章

css的一个输入占位符可以有2种不同的字体大小吗?

如何在占位符中添加图标

占位符中 -5 的目的是啥? C#

如何在 SwiftUI WidgetKit 占位符中自定义占位符外观?

如何在输入标签的占位符中添加材质图标

AngularJS:Datepicker 指令如何在占位符中有今天的日期