入门孪生网络3-------使用一维卷积神经网络1DCNN与孪生网络的组合模型来实现excel数据的分类

news2025/1/9 15:09:58

在这里插入图片描述

文章目录

  • 前言
    • 入门孪生网络的第三小节,我尝试使用`keras`或`tensorflow2`框架来搭建一个数据分类的网络。大家可以参考的程序思路,我也是小白,可以评论区一起讨论。
  • 一、孪生网络与1DCNN组合网络的搭建思路
  • 二、我编写的孪生网络与1DCNN组合网络程序,仅供参考
  • 总结


前言

入门孪生网络的第三小节,我尝试使用kerastensorflow2框架来搭建一个数据分类的网络。大家可以参考的程序思路,我也是小白,可以评论区一起讨论。

一、孪生网络与1DCNN组合网络的搭建思路

  1. 读取数据:使用NumPy加载数据文件(假设为"data.csv"),并将其分为训练集和测试集。
  2. 定义1D卷积神经网络模型:通过创建get_cnn_model()函数来定义1DCNN模型,该模型包括一系列卷积层和池化层,以及最后的全连接层输出。这个模型将用于构建孪生网络模型的多个分支。
  3. 定义孪生网络模型:通过创建get_siamese_model()函数来定义孪生网络模型,该模型是由两个相同的CNN模型构成,它们共享权重,以便对两个输入数据进行编码。然后,将两个编码结果进行连接,并通过全连接层产生输出。
  4. 训练数据准备:将训练数据中每个数据与其他数据组合成一对来进行训练。

二、我编写的孪生网络与1DCNN组合网络程序,仅供参考

import numpy as np
from keras.layers import Input, Conv1D, MaxPooling1D, Flatten, Dense, concatenate
from keras.models import Model

# 读取数据
data = np.loadtxt('data.csv', delimiter=',', skiprows=1)

# 分割数据为训练集和测试集
train_data = data[:800, :]
test_data = data[800:, :]

# 将数据分为X和y
train_X, train_y = train_data[:, 0:1], train_data[:, 1]
test_X, test_y = test_data[:, 0:1], test_data[:, 1]

# 定义1D CNN模型
def get_cnn_model(input_shape):
    inputs = Input(shape=input_shape)
    conv1 = Conv1D(filters=32, kernel_size=3, activation='relu')(inputs)
    pool1 = MaxPooling1D(pool_size=2)(conv1)
    conv2 = Conv1D(filters=64, kernel_size=3, activation='relu')(pool1)
    pool2 = MaxPooling1D(pool_size=2)(conv2)
    conv3 = Conv1D(filters=128, kernel_size=3, activation='relu')(pool2)
    pool3 = MaxPooling1D(pool_size=2)(conv3)
    flat = Flatten()(pool3)
    dense = Dense(128, activation='relu')(flat)
    outputs = Dense(1, activation='sigmoid')(dense)
    model = Model(inputs=inputs, outputs=outputs)
    return model

# 定义孪生网络模型
def get_siamese_model(input_shape):
    left_input = Input(shape=input_shape)
    right_input = Input(shape=input_shape)
    cnn_model = get_cnn_model(input_shape)
    encoded_left = cnn_model(left_input)
    encoded_right = cnn_model(right_input)
    merged = concatenate([encoded_left, encoded_right], axis=-1)
    predictions = Dense(1, activation='sigmoid')(merged)
    model = Model(inputs=[left_input, right_input], outputs=predictions)
    return model

# 训练数据准备
train_pairs = []
train_labels = []
for i in range(train_X.shape[0]):
    for j in range(train_X.shape[0]):
        if i == j:
            continue
        train_pairs.append([train_X[i], train_X[j]])
        train_labels.append(int(train_y[i]==train_y[j]))        
train_pairs = np.array(train_pairs)
train_labels = np.array(train_labels)

# 测试数据准备
test_pairs = []
test_labels = []
for i in range(test_X.shape[0]):
    for j in range(test_X.shape[0]):
        if i == j:
            continue
        test_pairs.append([test_X[i], test_X[j]])
        test_labels.append(int(test_y[i]==test_y[j]))        
test_pairs = np.array(test_pairs)
test_labels = np.array(test_labels)

# 构建孪生网络模型
model = get_siamese_model((1,))

# 编译模型
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# 训练模型
model.fit([train_pairs[:, 0], train_pairs[:, 1]], train_labels, epochs=20, batch_size=32, validation_data=([test_pairs[:, 0], test_pairs[:, 1]], test_labels))

总结

通过对上述程序的分析,我们发现在使用1DCNN与孪生网络的组合进行数据分类时,需要注意以下几点。

  1. 数据预处理:与大多数机器学习任务一样,数据预处理是一个重要的步骤,可以对训练结果产生重要影响。数据预处理可以包括归一化、标准化、去除离群值等操作,以避免模型对噪声和异常值过度敏感。此外,还可以采用数据扩增的方法,以增加训练集的大小,从而提高模型的泛化能力。
  2. 模型选择和调优:1DCNN和孪生网络模型都是一类强大的模型,具有适应多种复杂数据结构的能力,但这也意味着它们需要更多的计算资源和训练时间。在选择模型时,需要考虑数据的大小、复杂度和分布情况,以及计算能力和训练时间的限制。对于大型、复杂的数据集,需要使用更深的神经网络和更复杂的训练算法,例如批量标准化、学习率调度和正则化等。
  3. 训练过程:在训练过程中,需要确保训练数据的平衡性,并使用交叉验证、迭代优化等技术,以避免过拟合或欠拟合的问题。此外,可以采用一些监控和日志记录的方法,以监测模型的训练进展,并进一步优化和调整模型的超参数。
  4. 结果分析:最后,需要对模型的训练结果进行分析和验证,以确定其准确性和可靠性。可以采用混淆矩阵、ROC曲线、准确率、召回率等指标来评估模型的性能,并进一步改进和优化模型的表现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/663289.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

操作教程:EasyCVR视频融合平台如何配置平台级联?

EasyCVR视频融合平台基于云边端一体化架构,可支持多协议、多类型设备接入,在视频能力上,平台可实现视频直播、录像、回放、检索、云存储、告警上报、语音对讲、电子地图、集群、智能分析以及平台级联等。平台可拓展性强、开放度高、部署轻快&…

干货讲解,财务报表结构分析

财务报表的构成是对企业财务状况、经营成果和现金流量的结构性表述。企业必须重视财务结构对经营业绩的影响,才能解决发展中的问题。 资产质量关注两个角度,一是资产结构,二是现金含量。 资产结构是什么意思呢?就是固定资产和无…

Linux 定时任务提权

Linux 定时任务提权 1.概述2.定时任务创建3.提权步骤 1.概述 定时任务(cron job)是Linux系统中的一个守护进程,用于调度重复任务,通过配置crontab可以让系统周期性地执行某些命令或者脚本。cron 是 Linux 系统中最为实用的工具之…

apple pencil二代平替笔哪个好用?苹果平板触控笔

随着互联网的快速发展,移动数码产品如手机、平板电脑、笔记本等正逐步进入人们的日常生活。同时电容笔的出现,也让这些产品的功能作用更上一层楼。由于苹果原装电容笔的价格非常贵,使得国内出现了越来越多的平替电容笔。总的来说,…

前端开发:基于cypress的自动化实践

如何在vue中使用cypress如何运行cypress如何编写测试用例如何解决测试数据的问题遇到的元素定位的问题如何看待cypresscypress是否为最佳工具测试怎么办? 如何在vue中使用cypress vue提供了vue-cli 可以快速的创建vue项目。 vue create hello-world在选择安装项里…

【亲测】集群环境中MMDetection3.0环境配置

本文记录下在集群环境下使用MMDetection的内容。 环境简介:所用集群设备为本地集群,具有管理节点和计算节点,且管理和计算在不同的主机上,作为用户,没有超级管理员权限。 MMdetection源码下载点击进入 这里主要记录下环…

二叉树题目:二叉树的中序遍历

文章目录 题目标题和出处难度题目描述要求示例数据范围进阶 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 解法三思路和算法代码复杂度分析 题目 标题和出处 标题:二叉树的中序遍历 出处:94. 二叉树的中序遍历 难度 3 级 题目描…

Windows Terminal添加至鼠标右键

Windows Terminal添加至鼠标右键 安装 在Microsoft Store中即可下载。 配置 在鼠标右键打开 下载Terminal图标 图标地址:https://raw.githubusercontent.com/microsoft/terminal/master/res/terminal.ico 下载后保存在某个文件夹path 添加到鼠标右键 批处理修改注册表 …

Linux常见指令(超详解哦)

Linux常见指令 引言Linux常见指令查指令——man文件管理相关指令lspwdcdtouchmkdirrmdir与rmrmdirrm cpmvfind 文件查看类catmorelesshead 与 tailheadtail使用管道显示某段内容 grep 打包压缩相关指令zip/unziptar 总结 引言 Linux与我们熟悉的Window都是操作系统&#xff0c…

spring-aop入门

spring-aop入门 什么是AOP OOP(Object-Oriented Programming)面向对象编程,允许开发者定义纵向的关系,但并适用于定义横向的关系,导致了大量代码的重复,而不利于各个模块的重用。 AOP(Aspect-Oriented Programming),…

优思学院|质量管理六大思维陷阱【五】:有了控制图就能改进质量?

1. 引言 在工厂的生产过程中,质量控制是至关重要的。控制图是一种常见的质量管理工具,它可以帮助工厂监测过程的稳定性和质量表现,同时它也是六西格玛最重要的工具之一。然而,人们对于控制图的理解并不总是正确,有时被…

【中危】Kubernetes secrets-store-csi-driver 信息泄露漏洞

漏洞描述: Kubernetes secrets-store-csi-driver 是一个用于 Kubernetes 的 CSI 驱动程序,它提供了一种将外部密钥存储系统中的凭据注入到 Kubernetes Pod 的机制。 在 secrets-store-csi-driver 受影响版本中,当在 CSIDriver 对象中配置了…

操作系统期末复习简记(更新中~)

文件 定义:文件是以计算机硬盘为载体的存储在计算机上的信息集合(宽泛的) 属性:描述文件状态的信息,eg.名称,修改时间等等 基本操作:创建、打开、修改文件 文件的逻辑结构 1、无结构文件&#x…

【SpringMVC】统一异常处理 前后台协议联调 拦截器(文末赠书)

1,统一异常处理 1. 问题描述 在讲解这一部分知识点之前,我们先来演示个效果,修改BookController类的getById方法 GetMapping("/{id}") public Result getById(PathVariable Integer id) {//手动添加一个错误信息if(id1){int i …

JS BOM和DOM对象的尺寸

A scroll…..系列 scrollHeight: 获取对象的滚动高度。 scrollWidth:获取对象的滚动宽度 scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离 内容距左边框的距离(不算padding与border) scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最…

智慧景区预约系统开发 实现游客自助游玩

旅游是我们休闲娱乐的重要手段之一,尤其是疫情放开以来,旅游成为很多人节假日的首选。绝大多数的旅游景区都是需要购票参观的,对于景区来说也是卖出的票越多,盈利越多。所以各大景区也一直都在拓展新的售票渠道来提升旅客数量。通…

JavaScript基础笔记

JavaScript 介绍 JavaScript 是什么 1JavaScript 书写位置 JavaScript 注释 JavaScript 结束符 JavaScript 输入输出语法 变量 变量是什么? 变量的基本使用 变量的本质 变量命名规则与规范 数组的基本使用 常量 数据类型 数据类型 – 数字类型(Number&…

基于ICA算法的图像融合matlab完整程序分享

用特定的算法将两幅或多幅图像综合成一幅新的图像。融合结果由于能利用两幅(或多幅) 图像在时空上的相关性及信息上的互补性,并使得融合后得到的图像对场景有更全面、清晰的描述,从而更有利于人眼的识别和机器的自动探测。 确保待融合图像已配准好且像素位宽一致,且融…

《向量数据库》——Milvus v1.0 已发布

Milvus v1.0 已发布 今天,我们很高兴地宣布 Milvus v1.0 版本的发布。通过数百名 Milvus 社区用户在八个月内不断的测试和试验, Milvus v0.10.x 现在已足够稳定,是时候该发布基于 Milvus v0.10.6 的 Milvus v1.0 了。 Milvus v1.0 具有以下功能: 支持主流的相似度计算方式…

软件测试CMA认证和CNAS认可分别有什么作用?

随着信息化时代的飞速发展,软件已经成为各行各业必不可少的工具。但是,随之而来的问题就是软件的质量问题,尤其是安全问题。这就需要软件测试行业的发展。而软件测试CMA认证和CNAS认可对于软件测试企业来说,是非常重要的两个证书。…