python 计算代码运行时长

代码如下:

time.perf_counter函数返回当前计算机系统时间

import time
start = time.perf_counter() 

##### 代码区 #####

end = time.perf_counter()
print('运行时间:{} 秒'.format(end-start))
print('运行时间:{} 小时'.format((end-start)/3600))
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 基于强化学习的自动化裁剪CIFAR-10分类任务python源码+项目部署说明(提升模型精度+减少计算量).zip 1、该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能。 目前的强化学习工作很多集中在利用外部环境的反馈训练agent,忽略了模型本身就是一种能够获得反馈的环境。本项目的核心思想是:将模型视为环境,构建附生于模型的 agent ,以辅助模型进一步拟合真实样本。 大多数领域的模型都可以采用这种方式来优化,如cv\多模态等。它至少能够以三种方式工作:1.过滤噪音信息,如删减语音或图像特征;2.进一步丰富表征信息,如高效引用外部信息;3.实现记忆、联想、推理等复杂工作,如构建重要信息的记忆池。 这里推出一款早期完成的裁剪机制transformer版本(后面称为APT),实现了一种更高效的训练模式,能够优化模型指标;此外,可以使用动态图丢弃大量的不必要单元,在指标基本不变的情况下,大幅降低计算量。 该项目希望为大家抛砖引玉。 为什么要做自动剪枝 在具体任务中,往往存在大量毫无价值的信息和过渡性信息,有时不但对任务无益,还会成为噪声。比如:表述会存在冗余/无关片段以及过渡性信息;动物图像识别中,有时候背景无益于辨别动物主体,即使是动物部分图像,也仅有小部分是关键的特征。 以transformer为例,在进行self-attention计算时其复杂度与序列度平方成正比。度为10,复杂度为100;度为9,复杂度为81。 利用强化学习构建agent,能够精准且自动化地动态裁剪已丧失意义部分,甚至能将序列信息压缩到50-100之内(实验中有从500+的序列度压缩到个位数的示例),以大幅减少计算量。 ***实验中,发现与裁剪agent联合训练的模型比普通方法训练的模型效果要更好。*** 使用说明 环境 ``` torch numpy tqdm tensorboard ml-collections ``` 下载经过预先​​训练的模型(来自Google官方) 本项目使用的型号:ViT-B_16(您也可以选择其它型号进行测试) ``` imagenet21k pre-train wget https://storage.googleapis.com/vit_models/imagenet21k/ViT-B_16.npz ``` 训练与推理 下载好预训练模型就可以跑了。 ``` 训练 python3 train.py --name cifar10-100_500 --dataset cifar100 --model_type ViT-B_16 --pretrained_dir checkpoint/ViT-B_16.npz 推理 python3 infer.py --name cifar10-100_500 --dataset cifar100 --model_type ViT-B_16 --pretrained_dir checkpoint/ViT-B_16.npz ``` CIFAR-10和CIFAR-100会自动下载和培训。如果使用其他数据集,您需要自定义data_utils.py。 在裁剪模式的推理过程中,预期您将看到如下格式的输出 关于裁剪器的模型结构设计,本模型中认为如何衡量一个信息单元是否对模型有意义,建立于其自身的信息及它与任务的相关性上。 因此以信息单元本身及它与CLS单元的交互作为agent的输入信息。
## 实现功能 * 测试数据隔离, 实现数据驱动 * 支持多接口数据依赖: 如A接口需要同时依赖B、C接口的响应数据作为参数 * 数据库断言: 直接在测试用例中写入查询的sql即可断言,无需编写代码 * 动态多断言: 如接口需要同时校验响应数据和sql校验,支持多场景断言 * 自动生成用例代码: 测试人员在yaml文件中填写好测试用例, 程序可以直接生成用例代码,纯小白也能使用 * 代理录制: 支持代理录制,生成yaml格式的测试用例 * 统计接口的运行时: 拓展功能,订制开关,可以决定是否需要使用 * 日志模块: 打印每个接口的日志信息,同样订制了开关,可以决定是否需要打印日志 * 钉钉、企业微信通知: 支持多种通知场景,执行成功之后,可选择发送钉钉、或者企业微信、邮箱通知 * 自定义拓展字段: 如用例中需要生成的随机数据,可直接调用 * 多线程执行 * 支持swagger接口文档转成yaml用例,节省用例编写时间 ## 遇到问题 * 请仔细阅读文档,文档中几乎可以帮你避免所有的问题 -------- 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
【资源介绍】 基于DQN深度强化学习解决三维在线装箱问题python源码+项目说明.zip 问题描述 物流公司在流通过程中,需要将打包完毕的箱子装入到一个货车的车厢中,为了提高物流效率,需要将车厢尽量填满,显然,车厢如果能被100%填满是最优的,但通常认为,车厢能够填满85%,可认为装箱是比较优化的。 设车厢为方形,其宽高分别为L,W,H;共有n个箱子,箱子也为方形,第i个箱子的宽高为li,wi,hi(n个箱子的体积总和是要远远大于车厢的体积),做以下假设和要求: 1. 方形的车厢共有8个角,并设靠近驾驶室并位于下端的一个角的坐标为(0,0,0),车厢共6个面,其中的4个面,以及靠近驾驶室的面是封闭的,只有一个面是开着的,用于工人搬运箱子; 2. 需要计算出每个箱子在车厢中的坐标,即每个箱子摆放后,其和车厢坐标为(0,0,0)的角相对应的角在车厢中的坐标,并计算车厢的填充率。 运行环境 主机 |内存 | 显卡 | IDE | Python | torch -----|------|------|-----|--------|----- CPU:12th Gen Intel(R) Core (TM) i7-12700H 2.30 GHz | 6GB RAM | NVIDIA GEFORCE RTX 3050 | Pycharm2022.2.1 | python3.8 | 1.13.0 思路 (1)箱子到来后,根据车厢的实际空间情况,按照策略选择放置点; (2)当摆放箱子时,以6种姿态摆放,并对其进行评估,使用评估值最高的姿态将箱子摆放在选中的角点上; (3)重复以上步骤,直到摆放完毕。 建立模型 在车厢内部设置坐标系,靠近驾驶室并位于下端的一个角的坐标为(0,0,0),相交于原点的车厢边、宽边和高边分别为x轴,y轴和z轴方向,L、W、H分别为车厢的、宽、高。箱子具有六种摆放姿态,分别以箱子的宽、高、宽高平面为底,旋转90°可以得到另外三种摆放姿态。 核心 # 箱子放置策略 本算法将角点作为车厢内部空间中箱子的摆放位置,每次放入新箱子后搜索新生成的角点,当向车厢中放入第一个箱子时,假设车厢中只有原点一个角点,当一个箱子放入后,会产生新的角点,再放置箱子后,又会产生新的角点。 建立箱子可放置点列表,表示箱子i到来时,车厢内部所有可选的摆放位置,在放置新箱子后更新可放置点列表,并记录已放置箱子到车厢顶部距离,用于后续的奖励函数。 # DQN (1)设置一些超参数,包括ε-greedy使用的ε,折扣因子γ,目标网络更新频率,经验池容量等。 (2)由于给定的箱子数据较少,为了增加模型训练数据数量,将给定的箱子数据打乱,以随机的形式生成并保存,作为训练数据,训练网络模型。 (3)奖励函数 使用x-y平面中两个最大剩余矩形面积(如下图)之和与箱子到车厢顶部的距离作为奖励值R,奖励函数表示如下 【说明】 该项目是个人毕设项目,答辩评审分达到95分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。 该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。 项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 欢迎下载交流,互相学习,共同进步!
Python 中有多种方式可以记录程序运行。下面分别介绍三种常见的方法: 1. 使用 time 模块 Python 中的 time 模块提供了一个 perf_counter() 函数,可以用来记录程序运行。这个函数返回一个自程序开始或计时器重置后累计的精确时间。下面是一个使用 time 模块记录程序运行的示例: ```python import time start_time = time.perf_counter() # 记录开始时间 # 在这里放入你的代码 end_time = time.perf_counter() # 记录结束时间 elapsed_time = end_time - start_time # 计算运行时 print(f"程序运行: {elapsed_time:0.4f} 秒") # 输出运行时 ``` 2. 使用 datetime 模块 Python 中的 datetime 模块提供了一个 datetime.now() 函数,可以记录程序运行。这个函数返回当前系统时间。下面是一个使用 datetime 模块记录程序运行的示例: ```python import datetime start_time = datetime.datetime.now() # 记录开始时间 # 在这里放入你的代码 end_time = datetime.datetime.now() # 记录结束时间 elapsed_time = end_time - start_time # 计算运行时 print(f"程序运行: {elapsed_time}") # 输出运行时 ``` 3. 使用 timeit 模块 Python 中的 timeit 模块是专门用来计算程序运行时间的模块。这个模块提供了一个 Timer 类,可以用来测量代码的执行时间。下面是一个使用 timeit 模块记录程序运行的示例: ```python import timeit code_to_test = """ # 在这里放入你的代码 """ elapsed_time = timeit.timeit(code_to_test, number=1000) # 计算运行时 print(f"程序运行: {elapsed_time:.6f} 秒") # 输出运行时 ``` 这些方法中,使用 time 模块的方式最为常见,因为它是 Python 内置模块,使用起来较为方便简单。如果需要更精确的时间测量或者更加高级的计时需求,可以考虑使用 datetimetimeit 模块。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值