TensorFlow3D张量切片出现0长度维度 如何正确提取单列数据
问题根因
你调用tf.slice时的参数设置错误,该函数的第三个参数是每个维度要截取的长度,你给Xdata的第一个维度长度设为0,自然切出来的张量第一维长度是0,没有有效数据。
正确实现方案
TensorFlow张量支持更简洁的numpy风格索引,不需要硬写tf.slice,你要提取第一维下标0/1、第二维前16383个元素、第三维下标1的1D序列,直接按以下写法操作即可:
# 直接索引,自动降维得到1D张量 Xdata = x[0, :16383, 1] Ydata = x[1, :16383, 1] # 转numpy后直接是1D数组,不需要额外索引降维 Xarry = Xdata.numpy() Yarry = Ydata.numpy() print(Xarry.shape) # 输出 (16383,) print(Yarry.shape) # 输出 (16383,) # 直接绘图即可 plt.plot(Xarry, Yarry)
如果你一定要用tf.slice实现,修改第三个参数的第一维长度为1,再用squeeze去掉长度为1的冗余维度即可:
Xdata = tf.squeeze(tf.slice(x, [0,0,1], [1,16383,1])) Ydata = tf.squeeze(tf.slice(x, [1,0,1], [1,16383,1]))
内容的提问来源于stack exchange,提问作者Matt Moynihan
相关产品推荐
相关产品推荐

