如何在TensorFlow v2中分析网络

时间:2019-10-11 15:14:34

标签: python tensorflow

开发DNN的一个常见且重要的问题是哪种操作需要花费多长时间以及它们在设备和线程之间的分布情况。

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

但是在V2中,没有更多的会话。相反,您可以像这样构建和训练模型:

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)

我唯一能找到的选项是profiler中的tensorflow_core.python.eager.profiler API。这样,您将得到一个Trace ProtoBuf object,其中包含带有持续时间的事件。但是,我得到的事件被命名为'Model', 'BatchV2', 'TensorSlice', 'Prefetch', 'MemoryCacheImpl', 'MemoryCache', 'TFRecord', 'Shuffle', 'Map', 'FlatMap', '_Send', 'ParallelMap', 'NotEqual', 'ParallelInterleaveV2', 'LogicalAnd',并且与各层之间的关系不再明确。

如何为显示所有Ops的运行时以及设备和线程的任何模型获得适当的跟踪?

1 个答案:

答案 0 :(得分:0)

TensorFlow Profiler需要Tensorflow和Tensorboard的 2.2版以上

1。安装“ tensorboard_plugin_profile”

pip install -U tensorboard_plugin_profile

2。确认TensorFlow可以访问GPU

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。定义张量板回调

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 =日志)

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

history = model.fit(train_input, train_output,
                        batch_size=BATCH_SIZE, epochs=EPOCHS,
                        callbacks=[tboard_callback])

5。训练结束后,在Terminal上运行tensorboard

tensorboard --logdir [save path]/logs/ 

不需要双引号

ex)张量板--logdir c \ python \ tb \ logs

6。打开浏览器,然后输入“ localhost:6006”>配置文件> kernal_stats

enter image description here

7。检查“跟踪查看器”和“内核统计”

enter image description here

enter image description here

我没有GPU,所以无法获取kernel_stats。

有关它的更多信息,我推荐此页面。

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