心电信号深度学习训练及部署(2):CNN训练并保存模型

本文详细介绍了使用TensorFlow构建CNN模型来处理心电信号,并进行深度学习训练。在训练集上取得97.421%的准确率,验证集上达到96.592%。模型保存为h5和pb格式,其中pb模型适用于C++环境调用。
摘要由CSDN通过智能技术生成

本部分的CNN模型采用https://blog.csdn.net/qq_43750573/article/details/105930152所用的模型,代码也是在该博主的代码基础上修改得到,CNN的模型介绍可参考论文(《面向心血管疾病识别的心电信号分类研究》)

 

代码及流程

1.下载数据

通过读取二进制文件,得到训练集和测试集的数据和标签

# 获取数据
def load_data(filename, sample_num, sample_len):
    fp = open(filename, "rb")
    if sample_len == data_len:
        context = fp.read(2 * sample_num * sample_len)
        fmt_unpack = '%d' % (sample_num * sample_len) + 'h'
        dat_arr = np.array(struct.unpack(fmt_unpack, context), dtype=float)
        dat_arr = dat_arr.reshape((sample_num, sample_len))
        for i in range(0, sample_num):
            dat_arr[i] = normalization(dat_arr[i])
        dat_arr = dat_arr.reshape(-1, data_len, 1)
    else:
        context = fp.read(sample_num * sample_len)
        fmt_unpack = '%d' % (sample_num * sample_len) + 'B'
        dat_arr = np.array(struct.unpack(fmt_unpack, context))
    fp.close()
    return dat_arr


# 获取训练和测试的数据
def get_data():
    data_path = os.path.join(os.getcwd(), "data")

    # 训练数据,35个个体,168000个心拍,N与V比例1:1,前半部分为N,后半部分为V
    data_train = load_data(os.path.join(data_path, data_train_name), train_num, data_len
  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值