File size: 1,216 Bytes
aa24fe8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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)