python – 获取可迭代的Tensor而不运行eval
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 获取可迭代的Tensor而不运行eval,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1353字,纯文字阅读大概需要2分钟。
内容图文
![python – 获取可迭代的Tensor而不运行eval](/upload/InfoBanner/zyjiaocheng/773/73688eeccde948a6b29d2acb8e82ee3e.jpg)
有没有办法让Tensor迭代而不运行eval()来获得它的numpy数组?
我试图在使用split()之后迭代张量的两个部分,但它发生在我的神经网络的隐藏层的构造中,所以它需要在我能够开始会话之前发生.
import tensorflow as tf
x = tf.placeholder('float', [None, nbits])
layer = [x]
for i in range(1,numbits):
layer.append(tf.add(tf.matmul(weights[i-1], layer[i-1]), biases[i-1]))
aes, bes = tf.split(1, 2, layer[-1])
if i%2 == 1:
for am, a, b in zip(add_layer, aes, bes):
layer.append(am.ex(a, b))
问题是此时[1]层是一个tf.placeholder,所以aes和bes都是张量,我不能用zip()迭代它们.
任何想法,将不胜感激.
解决方法:
不,没有;不直接.
最简单的想法是将Tensorflow程序分为两个阶段:构建计算图的构建Python阶段和运行计算图的执行阶段.在建设阶段没有任何实际运行;所有计算都在执行阶段发生.除了运行图形(session.run(),. eval()等)之外,构建阶段不能依赖于执行阶段的结果.
在构建图形时,您无法迭代Tensor,因为在调用session.run()之前,它实际上不会被评估为特定的值集.相反,它只是对计算图中节点的引用.
通常,您必须使用Tensorflow函数来操作Tensors,而不是Python原语(如zip).我喜欢它的一种方式是,它几乎就像Tensor是一个密封盒子中的放射性物体,你只能使用可以执行某组动作的机器人间接处理它(Tensorflow库函数):-)因此,您可能需要找到一种使用Tensorflow原语表达任务的方法.
如果你给出了一个完整的例子,你可能会说更多(我的代码片段并不清楚).一种可能性是使用tf.split将张量分割为子列表的Python列表,然后在列表上使用zip之类的东西.
我希望有所帮助!
内容总结
以上是互联网集市为您收集整理的python – 获取可迭代的Tensor而不运行eval全部内容,希望文章能够帮你解决python – 获取可迭代的Tensor而不运行eval所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。