4.9、SSRS-钻取报表

本文介绍钻取报表的开发流程,包括如何通过主报表跳转到子报表,并传递参数进行数据筛选,帮助用户深入分析数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

钻取报表的开发

 

1          钻取报表作用

钻取报表可以方便的查看相关的更细节的数据,有助于数据分析,以定位问题出现的原因

 

2          钻取报表由主报表和子报表构成,点击主报表中的项后,将跳向子报表,同时传递相应的参数和数据到子报表,以筛选数据

 

3          钻取报表的开发

 

3.1         开发子报表,子报表必须有参数,以接收父报表传递过来的参数

3.2         开发主报表,选定要跳转的项-》属性-》操作-》选择“转到报表”-》选择要跳转到的报表的名称-》添加要传递的参数的名称和值(注意:如果是下拉列表,传递的值需使用UniqueName属性读取,如[.UniqueName],得到的结果是“[Date].[YearNum].&[2015]”,因为子报表要接收的数据就是这个

3.3         注意,子报表接收的参数名和值,及父报表接收的参数名和值必须完全一致

 

 

<think>嗯,用户遇到了两个问题:一个是运行Python脚本时出现的RuntimeError,具体是关于存储大小不匹配;另一个是nn.init.kaiming_normal被弃用的警告。我需要先分析这两个问题的原因,然后给出解决方案。首先看RuntimeError:&#39;storagehas wrongbyte size&#39;。这个错误通常发生在使用torch.load加载模型时,模型结构或PyTorch版本不匹配。用户可能是在不同版本的PyTorch之间保存和加载模型,导致张量存储大小不一致。例如,用户保存模型时用的PyTorch版本和现在加载时用的版本不同,或者模型文件被损坏。另外,用户的错误信息中提到预期的存储大小非常大,7667828046330154142,这看起来像是一个溢出或错误的值,可能模型文件本身有问题,或者加载方式不正确。接下来是nn.init.kaiming_normal被弃用的警告。查阅PyTorch文档,发现kaiming_normal_已经被弃用,推荐使用kaiming_normal_作为函数,或者可能参数有变化,比如添加了新的参数如mode或nonlinearity。用户需要更新代码,使用新的初始化方法,并确保参数正确。 针对RuntimeError的解决方案,首先检查PyTorch版本是否一致。用户可以使用condalist查看环境中的PyTorch版本,确保保存和加载模型的版本相同。如果版本不一致,更新或降级PyTorch到对应版本。其次,检查模型文件是否完整,尝试重新下载或生成模型文件。如果问题依旧,可能需要指定map_location参数,确保模型加载到正确的设备上,比如CPU。另外,用户提到的错误信息中有路径和信号中断,可能模型加载过程中被中断,导致文件损坏,需要重新保存模型。对于弃用警告,替换nn.init.kaiming_normal为nn.init.kaiming_normal_,注意函数后面的下划线,这是PyTorch的原地操作约定。同时,需要指定mode参数,比如是&#39;fan_in&#39;还是&#39;fan_out&#39;,以及nonlinearity参数,如&#39;relu&#39;或&#39;leaky_relu&#39;,以符合新的函数要求。例如,将原来的初始化代码改为带有这些参数的调用。此外,用户提到的conda环境问题,可能需要检查环境是否激活正确,或者是否存在多个Python环境导致版本冲突。建议用户创建新的conda环境,安装指定版本的PyTorch,确保环境干净。 最后,需要提醒用户备份模型文件,避免数据丢失,以及在修改代码后测试是否解决错误。如果问题仍未解决,可能需要进一步检查模型结构或寻求社区帮助。</think>### PyTorch运行时错误与初始化方法弃用问题解决方案 #### 一、RuntimeError: "storage has wrong byte size" 错误分析 该错误通常由以下原因导致: 1. **PyTorch版本不匹配**:模型保存与加载时的PyTorch版本差异会导致张量存储格式不兼容 2. **模型文件损坏**:文件传输中断或存储介质故障可能导致模型文件损坏 3. **设备不匹配**:尝试将GPU训练的模型直接加载到CPU环境(或反之)时可能出现兼容性问题 #### 二、分步解决方案 1. **验证PyTorch版本一致性** ```bash # 查看当前环境PyTorch版本 conda list | grep torch # 示例输出: # pytorch 2.0.1 py3.8_cuda11.8_0 ``` 若版本不一致,建议使用原始训练环境版本: ```bash conda install pytorch==x.x.x torchvision==x.x.x -c pytorch ``` 2. **安全加载模型文件** ```python import torch # 强制加载到CPU并忽略架构差异 model = torch.load(&#39;model.pth&#39;, map_location=torch.device(&#39;cpu&#39;), _restore_shapes=False) ``` 3. **文件完整性验证** ```python import hashlib def check_file_hash(filename): with open(filename, "rb") as f: file_hash = hashlib.md5() chunk = f.read(8192) while chunk: file_hash.update(chunk) chunk = f.read(8192) return file_hash.hexdigest() original_hash = "a1b2c3d4e5f6..." # 原始文件MD5值 current_hash = check_file_hash("model.pth") assert original_hash == current_hash, "文件已损坏!" ``` #### 三、nn.init.kaiming_normal弃用警告处理 PyTorch 1.8+ 已弃用旧式初始化方法,新规范要求显式指定参数: ```python # 旧方法(已弃用) nn.init.kaiming_normal(param) # 新规范写法 torch.nn.init.kaiming_normal_( tensor, mode=&#39;fan_in&#39;, # 或&#39;fan_out&#39; nonlinearity=&#39;relu&#39; # 可选: &#39;leaky_relu&#39;需配合负slope ) # 完整示例 def init_weights(m): if isinstance(m, nn.Conv2d): nn.init.kaiming_normal_(m.weight, mode=&#39;fan_out&#39;, nonlinearity=&#39;relu&#39;) elif isinstance(m, nn.Linear): nn.init.kaiming_normal_(m.weight, mode=&#39;fan_in&#39;, nonlinearity=&#39;leaky_relu&#39;) ``` #### 四、环境配置建议 创建专用环境避免依赖冲突: ```bash conda create -n torch20 python=3.8 conda activate torch20 conda install pytorch==2.0.1 torchvision==0.15.2 -c pytorch ``` #### 五、进阶调试技巧 1. **选择性加载模型参数** ```python state_dict = torch.load(&#39;model.pth&#39;, map_location=&#39;cpu&#39;) model.load_state_dict({k: v for k, v in state_dict.items() if k in model.state_dict()}) ``` 2. **使用strict=False模式** ```python model.load_state_dict(torch.load(&#39;model.pth&#39;), strict=False) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值