由于我需要在使用Tensorflow训练模型之前为数据编写一些预处理程序,因此需要对进行一些修改tensor
。但是,我不知道如何tensor
像使用一样修改值numpy
。
最好的方法是可以tensor
直接修改。但是,在当前版本的Tensorflow中似乎不可能。另一种方法是改变tensor
到ndarray
该进程,然后用tf.convert_to_tensor
改回来。
关键是如何更改tensor
为ndarray
。
1)tf.contrib.util.make_ndarray(tensor)
:https
:
//www.tensorflow.org/versions/r0.8/api_docs/python/contrib.util.html#make_ndarray
根据文档,这似乎是最简单的方法,但是在当前版本中我找不到此功能Tensorflow。其次,它的输入TensorProto
不是tensor
。
2)a.eval()
用于复制a
到另一个ndarray
但是,它仅tf.InteractiveSession()
在笔记本中使用时有效。
下面是一个带有代码的简单案例。这段代码的目的是使tfc
的输出与处理npc
后的输出相同。
提示
您应该这样对待tfc
并且npc
彼此独立。这满足了最初检索到的训练数据采用tensor
格式的情况tf.placeholder()
。
源代码
import numpy as np
import tensorflow as tf
tf.InteractiveSession()
tfc = tf.constant([[1.,2.],[3.,4.]])
npc = np.array([[1.,2.],[3.,4.]])
row = np.array([[.1,.2]])
print('tfc:\n', tfc.eval())
print('npc:\n', npc)
for i in range(2):
for j in range(2):
npc[i,j] += row[0,j]
print('modified tfc:\n', tfc.eval())
print('modified npc:\n', npc)
输出:
tfc:
[[1. 2.]
[3. 4.]]
npc:
[[1. 2.]
[3. 4.]]
修改tfc:
[[1. 2.]
[3. 4.]]
修改npc:
[[1.1 2.2]
[3.1 4.2]]
使用assign和eval(或sess.run)分配:
import numpy as np
import tensorflow as tf
npc = np.array([[1.,2.],[3.,4.]])
tfc = tf.Variable(npc) # Use variable
row = np.array([[.1,.2]])
with tf.Session() as sess:
tf.initialize_all_variables().run() # need to initialize all variables
print('tfc:\n', tfc.eval())
print('npc:\n', npc)
for i in range(2):
for j in range(2):
npc[i,j] += row[0,j]
tfc.assign(npc).eval() # assign_sub/assign_add is also available.
print('modified tfc:\n', tfc.eval())
print('modified npc:\n', npc)
它输出:
tfc:
[[ 1. 2.]
[ 3. 4.]]
npc:
[[ 1. 2.]
[ 3. 4.]]
modified tfc:
[[ 1.1 2.2]
[ 3.1 4.2]]
modified npc:
[[ 1.1 2.2]
[ 3.1 4.2]]
问题内容: 我是TensorFlow的新手。在阅读现有文档时,我发现该术语确实令人困惑。因此,我需要澄清以下问题: 和, vs. ,’张量’vs.之间是什么关系? 它们都是张量类型吗? 问题答案: TensorFlow没有一流的Tensor对象,这意味着在运行时执行的基础图中没有任何概念。相反,该图由相互连接的op节点组成,代表操作。操作分配内存的输出,这些都可以在端点上,等等,你可以认为这些端点
问题内容: 我无法按名称恢复张量,我什至不知道是否可能。 我有一个创建图的函数: 我想在此函数之外访问变量S1_conv1。我试过了: 但这给了我一个错误: ValueError:共享不足:不允许使用变量scale_1 / Scale1_first_relu。您是说要在VarScope中设置“ reuse = None”? 但这有效: 我可以解决这个问题 但我不想那样做。 我认为我的问题是S1_c
Tensorflow版本:1.12 Keras版本:2.2.4 OS:Debian Linux(VM实例)Python版本:2.7 我试过:1。用[None,299,299,3]以及[-1,299,299,3]重塑()。两者都不按要求工作 预期结果:
问题内容: 我想在中复制以下代码。例如,我想为所有先前具有值的张量索引分配a 。 如果我在其中编写类似的代码,则会出现以下错误。 方括号中的条件应为。 有没有一种方法可以实现这种“条件赋值”(因为缺少更好的名称)? 问题答案: TensorFlow API中提供了几种比较运算符。 但是,在直接操纵张量时,没有什么等效于简洁的NumPy语法。你必须要使用个人的,和运营商执行相同的操作。 您的NumP
问题内容: 我正在使用和创建神经网络;由于某种原因,我想获得某种内在的张量的值给定的输入,所以我使用的,作为一个。 但是,我发现很难找到张量名称的正确语法,即使知道它的名称也很困难(而且我对操作和张量感到困惑),因此我使用张量板绘制图形并寻找名称。 有没有一种方法可以在不使用张量板的情况下枚举图中的所有张量? 问题答案: 你可以做 另外,如果您要在IPython笔记本中进行原型制作,则可以直接在笔
本文向大家介绍tensorflow从张量中提取一个切片,包括了tensorflow从张量中提取一个切片的使用技巧和注意事项,需要的朋友参考一下 示例 请参阅文档以获取详细信息。tf.slice(input, begin, size) 参数: input:张量 begin:每个维度的起始位置 input size:的每个维度的元素数input,使用-1包括所有剩余元素 块状切片: 使用负索引,检索第