我想训练量化网络,即在前向传递期间使用量化权重来计算损耗,然后在后向传递期间更新基础全精度浮点权重.
这个问题已经在这里提出但没有回答.
请注意,在我的情况下,"假量化"就足够了.这意味着权重仍然可以存储为32位浮点值,只要它们代表低位宽量化值即可.
在Pete Warden的博客文章中,他指出:
"[...]我们确实支持"虚假量化"运算符.如果你在图表中包含预期量化的点(例如在卷积之后),那么在正向传递中浮点值将是舍入到指定的级别数(通常为256)以模拟量化效果."
提到的运算符可以在TensorFlow API中找到.
谁能指出我如何使用这些功能?如果我在模型定义中的例如转换层之后调用它们,为什么要量化层中的权重而不是该层的输出(激活)?
我正在使用TensorFlow的Dataset API加载和预处理图像。我想将预处理图像的摘要添加到Tensorboard。
推荐的方法是什么?
到目前为止,我的代码如下所示:
def get_data():
dataset = FixedLengthRecordDataset(...)
dataset = dataset.map(dataset_parser, ...)
if is_training:
dataset = dataset.map(preprocess_for_train, ...)
# Do shuffling, batching...
return dataset
def preprocess_for_train(image, label):
# Do preprocessing...
image = tf.image.random_flip_left_right(image)
# Add summary
tf.summary.image('preprocessed_image', tf.expand_dims(image, 0))
return image, label
Run Code Online (Sandbox Code Playgroud)
在preprocess_for_train我的形象中列出的SUMMARIES集合,而是返回到外部功能时,它是没有图的较长部分。我认为发生这种情况是因为map使用了不同的线程,因此引用了的不同实例tf.Graph。
由于这不起作用,我还需要其他哪些选项才能在Tensorboard中显示图像?