【问题标题】:Why does tf.slice return this error?为什么 tf.slice 返回此错误?
【发布时间】:2019-05-10 14:18:44
【问题描述】:

我正在尝试构建一个多层感知器,其中我的数据由成对的特征组成,例如每个输入都是一个数组x_1 = [v_1,v_2],其中v_i 是特征向量。因此,我的输入张量大小为[None,2,50](每个 v_i 的大小为 50)。现在我正在尝试将输入张量分成两个张量,但未能成功:一个包含 v_1,另一个包含 v_2。例如,为了得到 v_1 的修改后的张量,我尝试:

v1 = tf.squeeze(tf.slice(input, [0,0,0], [-1, 1, -1]), squeeze_dims=[1])) 

我得到: 大小必须是 3 级......在我看来是这样的......我做错了什么? 提前致谢!

【问题讨论】:

  • input.eval().shape 返回什么?你试过其他方法吗,包括tf.unpack
  • 它返回'无法使用 eval() 评估张量,没有注册默认会话':(
  • 好的。之前做sess=tf.InteractiveSession()
  • 我解决了一些错误,您昨天的回答现在有效:)。顺便说一句,如果我能最后一次打扰你,这些台词是做什么的?我的 google-fu 不够强大..tf.concat(1, [a,b]).get_shape() TensorShape([Dimension(None), Dimension(100)])
  • 为什么需要先getShape,然后是TensorShape?

标签: neural-network tensorflow deep-learning


【解决方案1】:

split 在轴 =1 上(您的第 2 维:[None,2,50])并希望在两侧均等分布:[1,1],(实验 [2, 0],[0,2] 看看会发生什么,一个分裂不会得到任何东西)

v1,v2  = tf.split(input,num_or_size_splits=[1,1],axis=1)
v1 = tf.squeeze(v1,1)

split 返回一个列表,squeeze 现在可以处理它了

【讨论】:

    猜你喜欢
    • 2014-01-26
    • 2016-01-24
    • 2015-03-23
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多