将XLS加速度计数据转换为Python类型适配TensorFlow Lite模型
加速度计Excel数据转TensorFlow Lite输入格式解决方案
需求背景
已将加速度计数据保存至Excel工作表,需将数据转换为类似C结构体格式的Inputs数组和Outputs数组,用于TensorFlow Lite模型训练。Excel包含5条训练数据,每条数据对应X、Y、Z轴各8个采样值,以及1个输出值。
完整转换代码
import pandas as pd import numpy as np # 读取Excel数据 xls = pd.read_excel('TestVals.xls', header=None) # ***** Convert data here ***** # 配置参数 total_samples = 5 axis_sample_count = 8 # 拆分X、Y、Z轴采样数据,转换为对应C类型的numpy数据(s16 → int16) x_axis_data = xls.iloc[:, 0:axis_sample_count].values.astype(np.int16) y_axis_data = xls.iloc[:, axis_sample_count:2*axis_sample_count].values.astype(np.int16) z_axis_data = xls.iloc[:, 2*axis_sample_count:3*axis_sample_count].values.astype(np.int16) # 构造模拟C结构体的结构化数组 Inputs = np.zeros(total_samples, dtype=[ ('XInput', np.int16, (axis_sample_count,)), ('YInput', np.int16, (axis_sample_count,)), ('ZInput', np.int16, (axis_sample_count,)) ]) # 填充输入数据 for idx in range(total_samples): Inputs[idx]['XInput'] = x_axis_data[idx] Inputs[idx]['YInput'] = y_axis_data[idx] Inputs[idx]['ZInput'] = z_axis_data[idx] # 提取并转换输出数据(u8 → uint8) Outputs = xls.iloc[:, -1].values.astype(np.uint8) # 模型训练(若模型需要扁平化输入,可拼接数据) # Inputs_flat = np.hstack([x_axis_data, y_axis_data, z_axis_data]) # model = create_model() # model.fit(Inputs_flat, Outputs)
说明
- Excel结构假设:默认每行数据顺序为
X0~X7, Y0~Y7, Z0~Z7, 输出值,若你的Excel列顺序不同,需调整iloc的列索引范围。 - 数据类型对应:C语言的
s16对应numpy的int16,u8对应uint8,保证数据类型匹配。 - 模型输入适配:若你的TensorFlow模型需要二维扁平化输入(如每个样本24个特征),可使用
np.hstack将X、Y、Z数据拼接成二维数组后传入model.fit。
内容的提问来源于stack exchange,提问作者Astrosml
相关产品推荐
相关产品推荐

