Download ultralytics/Else/weights2matrix.py from voidljc/cherrydata: direct link, hf CLI and curl.
- Browser
- Download file 1.22 kB
-
https://huggingface.co/voidljc/cherrydata/resolve/main/ultralytics/Else/weights2matrix.py
- Command line
-
hf download hf://voidljc/cherrydata/ultralytics/Else/weights2matrix.py
-
curl -L -o weights2matrix.py https://huggingface.co/voidljc/cherrydata/resolve/main/ultralytics/Else/weights2matrix.py
1.22 kB
| from ultralytics import YOLO | |
| import torch | |
| import math | |
| # 加载预训练模型 | |
| model = YOLO('yolov8n.pt') | |
| # 获取模型的状态字典(即权重) | |
| state_dict = model.state_dict() | |
| # 将所有参数的张量拉平并合并成一个大的向量 | |
| flattened_params = [torch.flatten(param) for param in state_dict.values()] | |
| # 拼接所有拉平后的张量 | |
| merged_params = torch.cat(flattened_params) | |
| # 输出合并后的大矩阵的形状 | |
| total_elements = merged_params.numel() | |
| print(f"Total elements: {total_elements}") | |
| # 计算合适的正方形矩阵的大小 | |
| square_size = math.ceil(total_elements ** 0.5) # 向上取整,以确保可以填充 | |
| total_required_elements = square_size ** 2 # 计算正方形矩阵需要的元素数量 | |
| # 如果需要的元素数量大于现有元素数量,用 -1 填充 | |
| if total_required_elements > total_elements: | |
| padding = total_required_elements - total_elements | |
| # 用 -1 填充 | |
| merged_params = torch.cat([merged_params, torch.full((padding,), -1)]) | |
| # 将填充后的张量转换为正方形矩阵 | |
| square_matrix = merged_params.view(square_size, square_size) | |
| # 打印结果 | |
| print(f"Reshaped into square matrix: {square_matrix.shape}") | |
| print(square_matrix) | |