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}")