我改为tf.train.SaverSavedModel格式,这意味着从磁盘加载我的模型要慢很多(而不是几秒钟,它需要几分钟).为什么这样做以及如何更快地加载模型?
我曾经这样做过:
# Save model
saver = tf.train.Saver()
save_path = saver.save(session, model_path)
# Load model
saver = tf.train.import_meta_graph(model_path + '.meta')
saver.restore(session, model_path)
Run Code Online (Sandbox Code Playgroud)
但现在我这样做:
# Save model
builder = tf.saved_model.builder.SavedModelBuilder(model_path)
builder.add_meta_graph_and_variables(session, [tf.saved_model.tag_constants.TRAINING])
builder.save()
# Load model
tf.saved_model.loader.load(session, [tf.saved_model.tag_constants.TRAINING], model_path)
Run Code Online (Sandbox Code Playgroud) 我tf.estimator在TensorFlow 1.4中使用tf.estimator.train_and_evaluate它很棒,但我需要提前停止.添加它的首选方法是什么?
我认为这有一些tf.train.SessionRunHook地方.我看到有一个旧的contrib包ValidationMonitor似乎提前停止了,但它似乎不再是1.4了.或者未来的首选方式是依靠tf.keras(早期停止真的很容易)而不是tf.estimator/tf.layers/tf.data,或许?
我正在努力了解我所拥有的瓶颈input_fn,tf.data.Dataset所以我想我会使用tf.profiler但它只显示迭代器操作.如何让探查器在我的数据集管道中输出相关的操作?
dataset = input_fn()
iterator = dataset.make_one_shot_iterator()
minibatch = iterator.get_next()
run_metadata = tf.RunMetadata()
with tf.Session() as session:
features, labels = session.run(minibatch,
options=tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE),
run_metadata=run_metadata)
tf.profiler.advise(tf.get_default_graph(), run_metadata)
Run Code Online (Sandbox Code Playgroud)
输出:
checkers {
key: "AcceleratorUtilizationChecker"
value {
}
}
checkers {
key: "ExpensiveOperationChecker"
value {
reports: "top 1 operation type: IteratorGetNext, cpu: 79.89sec, accelerator: 0us, total: 79.89sec (99.96%)\ntop 2 operation type: OneShotIterator, cpu: 27.92ms, accelerator: 0us, total: 27.92ms (0.03%)\ntop 3 operation type: _retval_IteratorGetNext_3_3, cpu: 57us, accelerator: 0us, total: …Run Code Online (Sandbox Code Playgroud) 是否有充分的理由使用tf.concat而不是tf.stack?它们看起来很相似.是否只是为了保证得到的张量与张量输入列表具有相同的维数?
除了tf.control_dependencies作为上下文管理器(即与Python一起使用with)之外,tf.group和之间的区别是tf.control_dependencies什么?
什么时候应该使用?
它tf.group没有任何特定的操作顺序吗?我假设tf.group([op_1, op_2, op_3])在列表的顺序中执行ops,但也许情况并非如此?docstring不指定行为.
我见过tf.image.decode_pngTensorFlow中的图像解码器,但读取音频文件(WAV,Ogg,MP3等)怎么样?没有可能TFRecord吗?
像这样的事情:
filename_queue = tf.train.string_input_producer(['my-audio.ogg'])
reader = tf.WholeFileReader()
key, value = reader.read(filename_queue)
my_audio = tf.audio.decode_ogg(value)
Run Code Online (Sandbox Code Playgroud) 如何在TensorFlow中进行全球平均合并?如果我有一个形状的张量,batch_size, height, width, channels = 32, 11, 40, 100只要使用tf.layers.average_pooling2d(x, [11, 40], [11, 40])channels = classes 就足够了吗?
当从源代码构建TensorFlow时,我们被要求设置--config=opt(默认情况下会启用gcc标志-march=native)但是在整个网络上我看到很多人使用-c opt,但根据Bazel的文档-c实际上是简写--compilation_mode而不是--config!
令人困惑的是,--compilation_mode也将'opt'作为一个值,但我认为这只是巧合?有人可以澄清在TensorFlow编译期间执行-c opt和之间的区别吗?--config=optbazel build
如何在 lambda 中使用上下文管理器?接受黑客攻击。暂缓认为这是 lambda 的错误用法的观点。
我知道我可以这样做:
def f():
with context():
return "Foo"
Run Code Online (Sandbox Code Playgroud)
但我想做这样的事情:
lambda: with context(): "Foo"
Run Code Online (Sandbox Code Playgroud) 我从设备获取图像并使用 Pixi JS 绘制带有过滤器的画布。使用计算机获取图像效果很好。但是当我在 IOS 上时,它会抛出错误,例如跨源问题,或者我正在尝试使用未知格式。
这是我用来绘制图像的代码(适用于网络/桌面,但不适用于cordova构建的ios应用程序)
_renderImage() {
let wWidth;
if (window.outerWidth > 414) {
wWidth = 414;
} else {
wWidth = window.outerWidth;
}
const img = new Image();
img.src = this.state.avatarSource;
let lower;
if (img.width > img.height) {
lower = img.height;
} else {
lower = img.width;
}
const canvas = this.refs.canvasimg;
if (canvas.hasChildNodes()) {
canvas.removeChild(canvas.childNodes[0]);
}
const renderer = PIXI.autoDetectRenderer(wWidth, wWidth * 1.25, {transparent: true});
const stage = new PIXI.Container();
canvas.appendChild(renderer.view);
// create a PIXI sprite …Run Code Online (Sandbox Code Playgroud) tensorflow ×8
python ×5
audio ×1
bazel ×1
canvas ×1
cordova ×1
ffmpeg ×1
html5-canvas ×1
javascript ×1
keras ×1
lambda ×1
pixi.js ×1