将numpy uint8输入tensorflow float32占位符

时间:2018-03-15 21:38:54

标签: python numpy tensorflow type-conversion one-hot-encoding

我最近发现了一个概念验证实现,它使用data = np.zeros((len(raw_data), n_input, vocab_size),dtype=np.uint8) 以单热编码方式准备功能:

np.uint8

如上所示,单个输入为tf.float32。 检查模型后,我意识到张量流模型的输入占位符定义为x = tf.placeholder(tf.float32, [None, n_input, vocab_size], name="onehotin")

(0/1)

我的特殊问题: 张量流如何处理这个&#34;不匹配&#34;输入类型。这些值np.float32是否由tensorflow正确解释或转换。如果是这样,这是在文档中提到的某个地方。谷歌搜索后我找不到答案。应该提到的是,模型的运行和价值似乎是合理的。但是,将输入numpy功能键入为my_chr<-c('2017-02-19 06:00','2017-03-10 06:00','2017-04-15 06:00') myPSX<-as.POSIXct(my_chr,format='%Y-%m-%d %H:%M',tz='UTC') PSXappend<-as.POSIXct('2017-08-09 06:00',format='%Y-%m-%d %H:%M',tz='UTC') 会导致需要大量内存。

相关性: 采用输入管道/将模型推广到生产中后,运行但经过错误训练的模型的行为会有所不同。

1 个答案:

答案 0 :(得分:1)

Tensorflow支持类似的dtype转换。

x + 1等操作中,值1正在通过tf.convert_to_tensor函数来处理验证和转换。该函数有时在底层手动调用,当设置dtype参数时,该值会自动转换为此类型。

将数组提供到占位符中时:

session.run(..., feed_dict={x: data})

...通过np.asarray调用将数据显式转换为正确类型的numpy数组。请参阅python/client/session.py上的源代码。请注意,当dtype不同时,此方法可能会重新分配缓冲区,这正是您所遇到的情况。所以你的内存优化并不像你期望的那样工作:临时的32位data是在内部分配的。