我在范围内创建了一个可训练的变量.后来,我进入相同的范围,设置范围reuse_variables,并用于get_variable检索相同的变量.但是,我无法将变量的可训练属性设置为False.我的get_variable界限如下:
weight_var = tf.get_variable('weights', trainable = False)
Run Code Online (Sandbox Code Playgroud)
但变量'weights'仍在输出中tf.trainable_variables.
我可以使用?设置共享变量的trainable标志吗?Falseget_variable
我想这样做的原因是我试图在我的模型中重用从VGG网络预训练的低级过滤器,我想像以前一样构建图形,检索权重变量,并分配VGG过滤器值到重量变量,然后在下面的训练步骤中保持它们固定.
placeholder在像MNIST这样的小问题中练习编码时,我一直在使用feed_dict来指导feed .TensorFlow还支持使用queue和提供数据queue runner,并且需要一些努力来学习.
是否有人对这两种方法进行了比较并衡量了性能?是否值得花时间学习使用队列来提供数据?
我想使用队列不仅可以提高性能,还可以使用更清晰的代码,这意味着什么.也许一个数据集的代码可以很容易地用于另一个数据集(一旦我将数据转换为TFRecord)?
但是, 这篇文章似乎说队列可能比feed_dict方法慢.现在还是这样吗?如果它更慢更难编码,我为什么要使用队列?
感谢您的投入.
我正在尝试实现类似完全卷积网络的东西,其中最后一个卷积层使用过滤器大小1x1并输出"得分"张量.分数张量具有形状[批次,高度,宽度,num_classes].
我的问题是,张量流中的哪个函数可以对每个像素应用softmax操作,与其他像素无关.tf.nn.softmax操作似乎不是为了这个目的.
如果没有这样的操作,我想我必须自己写一个.
谢谢!
更新:如果我必须自己实现,我想我可能需要将输入张量重新整形为[N,num_claees],其中N =批量x宽度x高度,并应用tf.nn.softmax,然后重新整形.是否有意义?
问题很简单:"相对"在张量板中意味着什么?
我理解这一步对应于summary_writer.add_summary()call中的'step'参数,但'relative'将x轴更改为我不理解的东西.
'墙'可能是适用于墙壁的时间.
此外,当使用"步骤"时,多次运行将具有锯齿形图,但这是另一个问题.
谢谢你的输入.
我刚开始使用Slim并且非常喜欢它.我使用了mnist测试代码slim.dataset_data_provider,但发现它比本机tensorflow慢得多,我在内存中加载了所有数据.
我想这是因为来自硬盘的瘦数据提供者流数据?我想知道是否有一个示例使用数据提供程序进行内存数据访问.
我已经开始num_readers = 10了DatasetDataProvider,并且已经开始num_threads = 10了tf.train.batch.
谢谢.这是一个很好的工具.
还附上代码供参考:
import tensorflow as tf
import time
import sys
from tensorflow.contrib import slim
# need tensorflow_models project
sys.path.append('/home/user/projects/tf_models/slim')
from datasets import mnist
g = tf.Graph()
with g.as_default():
tf.logging.set_verbosity(tf.logging.DEBUG)
train_set = mnist.get_split('train', data_dir)
provider = slim.dataset_data_provider.DatasetDataProvider(train_set, num_readers = 10, shuffle = True)
[image, label] = provider.get(['image', 'label'])
images, _ = tf.train.batch([image, label], batch_size = batch_size, num_threads=10, capacity = 2*batch_size)
images = tf.cast(images, tf.float32) …Run Code Online (Sandbox Code Playgroud)