首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在TensorFlow v2中评测网络

如何在TensorFlow v2中评测网络
EN

Stack Overflow用户
提问于 2019-10-11 23:14:34
回答 1查看 530关注 0票数 4

开发DNN的一个常见且重要的问题是,哪些操作需要多长时间,以及它们如何在设备和线程之间分配。

在TensorFlow v1中,这通常是通过传递给session.run()tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)来实现的,请参见Can I measure the execution time of individual operations with TensorFlow?

然而,在V2中没有更多的会话。相反,您可以构建和训练一个模型,如下所示:

代码语言:javascript
复制
model = tf.keras.Sequential([
    tf.keras.layers.Conv2D(32, 3, activation='relu', input_shape=(28, 28, 1)),
    tf.keras.layers.MaxPooling2D(),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(64, activation='relu'),
    tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(loss='sparse_categorical_crossentropy',
            optimizer=tf.keras.optimizers.Adam(),
            metrics=['accuracy'])

model.fit(train_dataset, epochs=2)

我能找到的唯一选择就是tensorflow_core.python.eager.profiler中的profiler应用编程接口。有了它,你就可以得到一个包含事件持续时间的Trace ProtoBuf object。然而,我得到的事件被命名为'Model', 'BatchV2', 'TensorSlice', 'Prefetch', 'MemoryCacheImpl', 'MemoryCache', 'TFRecord', 'Shuffle', 'Map', 'FlatMap', '_Send', 'ParallelMap', 'NotEqual', 'ParallelInterleaveV2', 'LogicalAnd',并且不再与层有明确的关系。

我如何为显示所有操作的运行时和设备&线程的任何模型获取适当的跟踪?

EN

回答 1

Stack Overflow用户

发布于 2020-12-09 13:41:33

TensorFlow分析器需要Tensorflow和Tensorboard的2.2以上版本的。

1.安装'tensorboard_plugin_profile'

代码语言:javascript
复制
pip install -U tensorboard_plugin_profile

GPU 2.确认TensorFlow可以访问

代码语言:javascript
复制
device_name = tf.test.gpu_device_name()
if not device_name:
  raise SystemError('GPU device not found')
print('Found GPU at: {}'.format(device_name))

3.定义张板回调

代码语言:javascript
复制
logs = "[save path]/logs/" + datetime.now().strftime("%Y%m%d-%H%M%S")
tboard_callback = tf.keras.callbacks.TensorBoard(log_dir = logs,
                                                 histogram_freq = 1, #option
                                                 profile_batch = 5) #option

在我的例子中,没有'profile_batch‘选项,我得到了100个步数(这是纪元) ex ) tboard_callback = tf.keras.callbacks.TensorBoard(log_dir = logs)

4.在fit()处设置回调属性

代码语言:javascript
复制
history = model.fit(train_input, train_output,
                        batch_size=BATCH_SIZE, epochs=EPOCHS,
                        callbacks=[tboard_callback])

5.训练结束后,在终端上运行tensorboard

代码语言:javascript
复制
tensorboard --logdir [save path]/logs/ 

不需要双引号

python ex) tensorboard --logdir \\tb\logs

6.打开浏览器并输入'localhost:6006‘> Profile > kernal_stats

7.检查“跟踪查看器”和"kernel_stats"

我没有图形处理器,所以我不能得到kernel_stats。

更多关于它的信息,我推荐这个页面。

https://www.tensorflow.org/tensorboard/tensorboard_profiling_keras

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58344162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档