【问题标题】:Transformation of an array yields an empty placeholder数组的转换产生一个空的占位符
【发布时间】:2020-03-27 04:52:32
【问题描述】:

我有一个名为 new_input_processed 的 numpy 数组。下面的代码将其转换为 float32 类型的 one hot 数组(参见 byte_list)。但是当我输入byte_list 来查看这个数组的值时,我得到一个空的张量。我想要一个非空的张量。可能吗 ?

In [30]: new_input_processed
Out[30]: 
array([[ 83, 111, 109, 101,  32,  83, 101, 113, 117, 101, 110,  99, 101,
         32, 111, 102,  32,  99, 104,  97, 114,  97,  99, 116, 101, 114,
          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0,   0,   0,   0,   0,   0,   0,   0,   0]], dtype=uint8)

In [31]: byte_list = tf.cast(tf.one_hot(new_input_processed, 256, 1, 0), dtype=tf.float32)

In [32]: byte_list
Out[32]: <tf.Tensor 'Cast_2:0' shape=(1, 100, 256) dtype=float32>

【问题讨论】:

  • 你怎么知道它是空的?

标签: arrays numpy tensorflow machine-learning


【解决方案1】:

你没有得到一个空的张量。张量对象信息正确返回:

<tf.Tensor 'Cast_2:0' shape=(1, 100, 256) dtype=float32>

看形状,和预期的一样。

不过,如果你想查看内容(即byte_listTensor 对象的实际值),一种方法是调用eval()

应该这样做:

import numpy as np
import tensorflow as tf
new_input_processed = np.array([[ 83, 111, 109, 101,  32,  83, 101, 113, 117, 101, 110,  99, 101,
                                  32, 111, 102,  32,  99, 104,  97, 114,  97,  99, 116, 101, 114,
                                  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
                                  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
                                  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
                                  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
                                  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
                                  0,   0,   0,   0,   0,   0,   0,   0,   0]], dtype=np.uint8)

byte_list = tf.cast(tf.one_hot(new_input_processed, 256, 1, 0), dtype=tf.float32)

with tf.Session() as sess:  print(byte_list.eval())  # here

输出:

[[[0. 0. 0. ... 0. 0. 0.]
  [0. 0. 0. ... 0. 0. 0.]
  [0. 0. 0. ... 0. 0. 0.]
  ...
  [1. 0. 0. ... 0. 0. 0.]
  [1. 0. 0. ... 0. 0. 0.]
  [1. 0. 0. ... 0. 0. 0.]]]

【讨论】:

  • 感谢您的回答。我误解了tensorflow返回的消息
猜你喜欢
  • 2016-07-06
  • 2014-10-21
  • 2018-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多