二进制中1的个数 和 二进制中0的个数

二进制中1的个数
  • 时间限制:1秒空间限制:32768K

题目描述

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
注意:
    1.n&(n-1) 是去掉n最右边的1
     2.n可能是负数,所以用n!=0
class Solution {
public:
     int  NumberOf1(int n) {
         int num = 0;
         
         while(n != 0){
             n = n&(n-1);
             num++;
         }
         
         return num;
         
     }
};

求零的个数
int fun(unsigned int x)
{
     int n=0;
     while((x+1))
     {
         n++;
         x=x|(x+1);
     }
     return n;
}



加载 PyTorch 模型权重遇到 `Process finished with exit code -1073740791 (0xC0000409)` 错误通常表明程序在执行过程中遇到了严重的崩溃问题。以下是可能的原因以及解决方案: ### 原因分析 1. **CUDA 设备断言触发** 如果模型是在 GPU 上训练并保存的,而加载未正确设置设备,则可能会引发 CUDA 错误[^4]。 2. **模型结构不匹配** 加载的权重文件与当前定义的模型架构不符可能导致不可预料的行为甚至程序崩溃。 3. **环境配置问题** 不同版本的 PyTorch 或依赖库之间的兼容性问题也可能导致此类错误。例如,在 Autodl 平台上直接配置 TensorFlow 环境运行代码可能是由于环境冲突引起的[^2]。 4. **终端仿真问题** 在某些 IDE 中(如 PyCharm),如果未启用“Emulate terminal in output console”,则无法捕获完整的错误日志信息,从而掩盖实际问题所在。 --- ### 解决方案 #### 方法一:验证模型与权重一致性 确保用于保存和加载的模型具有相同的架构定义。可以通过以下方式检查: ```python import torch # 定义模型 model = Net() # 打印模型状态字典键值对 print(model.state_dict().keys()) # 对比已保存权重的状态字典 state_dict_loaded = torch.load('model_name1.pth') print(state_dict_loaded.keys()) ``` 确认两者键名完全一致后再尝试加载操作。 #### 方法二:指定设备类型 为了避免潜在的 CUDA 错误,显式声明所使用的计算资源(CPU/GPU)。修改加载逻辑如下所示: ```python device = torch.device("cuda" if torch.cuda.is_available() else "cpu") model_load = Net() model_load.to(device) if torch.cuda.is_available(): state_dict = torch.load('model_name1.pth', map_location=device) else: state_dict = torch.load('model_name1.pth', map_location=torch.device('cpu')) model_load.load_state_dict(state_dict) ``` 上述代码片段通过判断是否有可用 GPU 来决定存储位置,并利用 `map_location` 参数适配不同场景下的数据迁移需求。 #### 方法三:调整开发工具设置 对于使用 PyCharm 用户而言,开启 “Run | Edit Configurations... -> Emulate terminal in output console” 功能有助于获取更详尽的日志输出以便定位根本原因。 #### 方法四:创建纯净实验环境 鉴于复杂项目可能存在隐含依赖关系干扰正常流程运转的情况,建议参照成功案例重新搭建独立工作区。比如基于 Conda 构建专属虚拟空间安装所需组件后重复试验过程: ```bash conda create -n myenv python=3.8 conda activate myenv pip install torch torchvision torchaudio git clone -b v2.5.1 --depth=1 https://github.com/huggingface/transformers.git # 若涉及 Hugging Face 库可同步引入对应分支版本[^3] ``` 最后按照既定脚本逐步调试直至恢复正常功能表现为止。 --- ### 测试准确性评估 完成修复之后可以依照先前设定好的指标体系衡量改进效果如何。例如统计分类任务上的总体精确度水平: ```python correct = 0 total = 0 with torch.no_grad(): for data in data_loader_test: images, labels = data[0].to(device), data[1].to(device) outputs = model_load(images) _, predicted = torch.max(outputs.data, 1) total += labels.size(0) correct += (predicted == labels).sum().item() accuracy_percentage = 100 * correct / total print(f'Accuracy of the network on the test images: {accuracy_percentage:.2f}%') # 输出保留两位小数的结果[^5] ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值