- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
现在我有一个模型配置为使用 feed_dict
获取输入。代码看起来像这样:
# model.py
class MyModel(object):
def __init__(self, hyperparams):
self.build_model(hyperparams)
def build_model(self, hps):
self.input_data = tf.placeholder(dtype=tf.float32, shape=[hps.batch_size, hps.nfeats])
self.labels = tf.placeholder(dtype=tf.float32, shape=[hps.batch_size])
# Define hidden layers, loss, training step, etc.
# train.py
model = MyModel(hps)
for _ in range(100):
x, y = some_python_function() # Read a batch from disk, preprocess
sess.run(model.train_step, feed_dict={model.input_data: x, model.labels: y})
出于性能原因,我想改用队列进行训练。但我想保持使用 feed_dict
的能力,例如用于推理或测试。
有没有一种优雅的方式来做到这一点?我想做的是,在使用队列时,“交换”队列出队操作返回的张量的占位符变量。我认为 tf.assign 是执行此操作的方法,即:
single_x, single_y = tf.parse_single_example(...)
x, y = tf.train.batch([single_x, single_y], batch_size)
model = MyModel(hps)
sess.run([tf.assign(model.input_data, x), tf.assign(model.labels, y)])
for _ in range(100):
sess.run(model.train_step)
但这会引发AttributeError:“Tensor”对象没有属性“assign”
。 tf.assign
的 API 文档将第一个参数描述为:“可变的张量。应该来自变量节点。可能未初始化。”这是否意味着我的占位符不可变?我可以让他们这样吗?或者我以错误的方式处理这个问题?
最小可运行示例 here .
最佳答案
您可以通过以下方式将变量
和操作
的创建分开:
Model
类实例化时调用的 build_variables
方法,build_model
方法的接口(interface),以便它接受您的 x
和 y
张量作为参数,从而构建模型基于它们的操作
。 这样您就可以重用模型的变量和常量。缺点是 placeholder
版本和任何其他版本的操作都会重复。
import tensorflow as tf
import numpy as np
BATCH_SIZE = 2
class Model(object):
def __init__(self):
self.build_variables()
def build_variables(self):
self.w = tf.Variable(tf.random_normal([3, 1]))
def build_model(self, x, y):
self.x = x
self.y = y
self.output = tf.matmul(self.x, self.w)
self.loss = tf.losses.absolute_difference(self.y, self.output)
model = Model()
sess = tf.InteractiveSession()
sess.run(tf.global_variables_initializer())
def placeholder_run():
x = tf.placeholder(dtype=tf.float32, shape=[BATCH_SIZE, 3])
y = tf.placeholder(dtype=tf.float32, shape=[BATCH_SIZE, 1])
model.build_model(x, y)
for i in range(3):
x = np.random.rand(BATCH_SIZE, 3)
y = x.sum(axis=1, keepdims=True)
loss = sess.run(model.loss, feed_dict={model.x:x, model.y:y})
print(loss)
def nonph_run():
x = tf.random_normal([BATCH_SIZE, 3])
y = tf.reduce_sum(x, axis=1, keep_dims=True)
model.build_model(x, y)
for i in range(3):
loss = sess.run(model.loss)
print(loss)
if __name__ == '__main__':
# Works
placeholder_run()
# Doesn't fail
nonph_run()
关于python - 在 feed_dict 和队列之间轻松切换以输入 TensorFlow 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45134654/
我正在玩构建线性回归的 Tensorflow 示例,我的代码如下: import numpy as np import tensorflow as tf train_X = np.asarray([3
我有点困惑为什么我们要使用feed_dict?据我的 friend 说,当您使用 placeholder 时,通常会使用 feed_dict,这可能对生产不利。 我见过这样的代码,其中不涉及 feed
假设您有一个网络,目前已使用 feed_dict 将数据注入(inject)图表。每隔几个时期,我通过将任一数据集的批处理输入到我的图表来评估训练和测试损失。 现在,出于性能原因,我决定使用输入管道。
与 .from_tensor_slices 相比,为什么 feed_dict 使用更少的 GPU 内存?我认为在下面的行中,Tensorflow 会在迭代 GPU 中的数据之前将整个数据加载到 GPU
第一次遇到这样的问题。 错误是关于 feed_dict={tfkids: kids, tfkids_fit: kids_fit} 的,似乎需要 reshape kids_fit。 谁能帮我解决这个问题
我有一个模型,需要每 N 次迭代为权重(可训练变量)分配新的外部值。 我可以想到一些解决方案: 保存和恢复 不好,因为我需要序列化,通过文件系统调用等(即使我使用 tmpfs 之类的东西) 使用占位符
所以我是 Tensorflow 的新手,我试图准确了解何时使用 feed_dict 以及何时不需要。 但是,我对 feed_dict 的工作原理感到困惑。 例如:1 会与 2 和 3 相同吗? 1.
我一直在使用 feed_dict 来直接输入 placeholder在像 MNIST 这样的小问题中练习编码。 TensorFlow 还支持使用 queue 馈送数据和 queue runner ,它
我正在使用 Java 来提供通过 Python 学习的 Tensorflow 模型。该模型有两个输入。代码如下: def predict(float32InputShape: (Long, Lon
我正在运行一个简单的神经网络进行线性回归。然而,TensorFlow 提示我的 feed_dict 占位符不是图表的元素。然而,我的占位符和模型都在我的图表中定义,如下所示: import numpy
我正在研究 python 中的分类问题。事实上,我在 TensorFlow 方面还不是很好。所以我很久以来就有同样的问题,我不知道如何解决。我希望你能帮助我:) 这是我的数据: X:8000 张图片:
我刚开始用 python 学习 Tensorflow。当我从一个简单的 AddTwo 类开始时出现以下错误。错误信息是: Cannot interpret feed_dict key as Tenso
我有一个由多个子网络组成的网络(多个卷积网络和最后一个全连接 + 软最大层)。每个 ConvNet 提要具有特定区域和图像大小。因此,为了给我的网络提供数据,我为每个 convnet 输入编写图像占位
我正在尝试将一个简单的片段从 TensorFlow 1.x 转换为 TensorFlow 2: # ########## TensorFlow 1.x code: ########## import
我正在尝试将 feed_dict value bool 传递给函数 def sum(a, b, flag = True, msg1= "Sum", msg2= "Multiply "): if
现在我有一个模型配置为使用 feed_dict 获取输入。代码看起来像这样: # model.py class MyModel(object): def __init__(self, hyperp
我正在解决 TensorFlow 的示例问题(特别是使用占位符),并且不明白为什么我收到(看起来是)形状/类型错误,而我相当有信心这些错误是什么他们应该是。 我尝试过使用 X_batch 和 y_ba
下面是小的 Tensorflow 代码 # coding: utf-8 # In[27]: import tensorflow as tf # In[28]: # Model parameters W
我在 Tensorflow 中有一个 C++ 代码,如下所示,它涉及使用占位符的矩阵乘法: #include #include #include #include #include "tens
我想在 TensorFlow C++ 中构建和训练一个由两层组成的图,并将给定的矩阵作为输入提供给它。 我有两个不同的语法示例: The official C++ example (line # 12
我是一名优秀的程序员,十分优秀!