【问题标题】:how we can compute the training time of deep neural networks?我们如何计算深度神经网络的训练时间?
【发布时间】:2022-01-24 11:34:46
【问题描述】:

我目前正在研究一个深度神经网络,但我对如何计算深度神经网络的训练时间感到困惑。我怎么知道我的神经网络与其他深度神经网络相比花费的时间更少。

我期待您的帮助和任何文章推荐。

【问题讨论】:

  • 您指的是训练模型后进行一次预测所需的时间。比较模型之间的训练时间并没有真正意义,因为时间取决于您使用的数据库的大小和模型本身的复杂性。例如,深度卷积网络的训练量也取决于 GPU 的处理能力
  • 那么神经网络模型的训练时间取决于GPU?

标签: python tensorflow neural-network


【解决方案1】:

ML 模型的比较不应基于训练时间,因为所用时间可能因许多因素而异:

  1. 相同的代码在运行多次时显示可变时间,具体取决于瞬时 CPU 负载和性能。
  2. 用于训练模型的数据集大小。
  3. 还有一些其他因素,如神经网络层数、每层神经元数、使用的激活函数的复杂性等。

但是,如果您使用多线程/多处理来训练您的模型,并且想知道这是否有帮助,您可以使用 python 提供的计时函数。

1。使用时间模块中的 perf_counter()

from time import perf_counter, sleep

start = perf_counter()
# Some Code
end = perf_counter()

print(f"Time taken to execute code : {end-start}")

2。在 .ipynb 笔记本中使用 %%time

%%time
# Some Code

【讨论】:

    【解决方案2】:
    • 如果您使用的是 jupyter 笔记本或任何使用 .ipynb 文件的笔记本,则可以使用:%%time,来计算运行单元的时间。
    • 如果您打算使用 .py 代码并且只想计算代码运行的时间,您可以在代码的训练部分之前和之后使用 time 库,您可以使用以下方法

    from time import time start = time() "Your code" print(time()-start)

    【讨论】:

    • 感谢您的回答。我遵循您提到的相同代码。我的神经网络需要大约 20 分钟才能在 200 个 epoch 上训练神经网络。我的问题是,我的模型需要 20 分钟来训练大型数据集。那么我如何定义我的训练时间,因为简单的架构或其他原因,我的神经网络需要更少的时间。
    • 如果你需要一定的准确度,我认为你不能定义神经网络的训练时间,最简单的方法是使用更少的 epoch 或一个回调函数,一旦网络命中就停止训练预定义的准确度级别。否则,方法将是使用更好的 GPU 支持。
    • 所以神经网络的训练时间我们无法定义。
    • 不,如果您不想放弃准确性。
    • 那么,我该如何定义我的训练时间。与其他神经网络相比,我的神经网络训练时间应该是 2 分钟来训练 1000 个样本。
    猜你喜欢
    • 2017-10-12
    • 2018-06-11
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 2020-12-06
    • 2017-03-20
    • 2017-06-19
    相关资源
    最近更新 更多