45 lines
1.6 KiB
Python
45 lines
1.6 KiB
Python
import numpy as np
|
|
import json
|
|
|
|
json_file_path = './knn-model.json'
|
|
bin_file_path = './knn-model.bin'
|
|
|
|
with open(json_file_path, 'r') as f:
|
|
model_data = json.load(f)
|
|
|
|
with open(bin_file_path, 'rb') as f:
|
|
binary_full_data = f.read()
|
|
|
|
feature_dim = model_data['featureDim']
|
|
|
|
print(f"Feature Dimension: {feature_dim}")
|
|
|
|
for label, meta in model_data['dataset'].items():
|
|
start_byte = meta['start']
|
|
length_byte = meta['length']
|
|
|
|
print(f"\n--- Class: {label} ---")
|
|
print(f"Start Byte: {start_byte}")
|
|
print(f"Length Byte: {length_byte}")
|
|
|
|
# 提取当前类别的数据片段
|
|
class_binary_data = binary_full_data[start_byte : start_byte + length_byte]
|
|
|
|
# 转换为 Float32 数组
|
|
try:
|
|
class_features_elements = np.frombuffer(class_binary_data, dtype=np.float32)
|
|
num_elements = len(class_features_elements)
|
|
print(f"Float32 elements extracted: {num_elements}")
|
|
|
|
if num_elements % feature_dim == 0:
|
|
num_samples = num_elements // feature_dim
|
|
print(f"SUCCESS: Aligned. Number of samples: {num_samples}")
|
|
else:
|
|
print(f"ERROR: Not aligned. {num_elements} elements / {feature_dim} dim = {num_elements / feature_dim} (not an integer).")
|
|
print(f"Expected length in bytes to be multiple of {feature_dim * 4} = {feature_dim * 4} bytes.")
|
|
print(f"Actual length in bytes: {length_byte}. Remainder when dividing by {feature_dim * 4}: {length_byte % (feature_dim * 4)}")
|
|
|
|
except Exception as e:
|
|
print(f"Error processing binary data for class {label}: {e}")
|
|
|