2021-04-25

本文介绍了1维卷积神经网络(1D-CNN)在处理1维信号如心电信号、振动信号等领域的应用,对比了其与2D-CNN的优缺点。1D-CNN因其参数少、训练简单和计算效率高,在资源有限的场景下更适用。文章通过Keras框架展示了1D-CNN在模拟电路故障诊断中的应用,并提供了实验电路和数据集的描述。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一维卷积神经网络(1D-CNN)

常见用的卷积神经网络(CNN,convolutional neural network)为2D-CNN,即卷积核为两维,常用于处理图片、视频等数据,已经成功应用于许多计算机视觉和模式识别任务中。在采用CNN处理1维信号时,通常需要将1维信号转换为2维再输入CNN中,例如将1D振动信号、心电信号等通过各种变换方式变成2D图片后输入CNN。然而,采用2D-CNN处理1D信号时存在以下缺点:

  1. 处理2维数据时,算法计算复杂度更高,通常需要更高性能的硬件来进行训练,因此不是特别适用于实时应用场景和低功耗、低内存的设备;
  2. 通常2D-CNN需要大量训练数据,然而许多1D信号处理领域缺乏大量标记数据。

近年来,越来越多的学者采用紧凑的1D-CNN来直接处理1D信号,已经成功应用于心电信号分类、结构健康监测、轴承故障诊、模拟电路故障诊断、大功率发动机故障监控等多个领域。相比于2D-CNN,1D-CNN具有参数量小、训练容易、计算量小等优点。1D-CNN与2D-CNN结构类似,只是卷积核为1维卷积,1D-CNN通常包括1D卷积层、降采样Pooling层和全连接层,通过反向传播算法对每个卷积单元参数进行优化。1D-CNN主要的超参包括:卷积层和全连接层数、卷积核大小、降采样因子大小、激活函数、学习率等。1D-CNN网络结构如图1所示。
图1 1D-CNN网络结构图
图1 1D-CNN网络结构图
卷积层将输入的局部区域与多个滤波器核进行卷积操作,然后送入神经元产生输出特征。每个过滤器采用相同的内核来提取输入局部区域的局部特征,这通常称为权重共享。卷积操作可以定义为:
y i l + 1 ( j ) = K i ⊤ ∗ x l ( j ) + b i l \mathrm{y}_{i}^{l+1}(j)=K_{i}^{\top} * x^{l}(j)+b_{i}^{l} yil+1(j)=K

要比较两个时间戳之间的差异,可以利用 `date` 命令或者编程语言(如 Python 或 Bash 脚本)来实现。以下是具体方法: ### 方法一:通过 Linux 的 `date` 和 `awk` 计算时间差 可以通过以下命令计算两个时间戳之间的时间差(单位为秒)。 ```bash #!/bin/bash timestamp1="2025-03-16T13:33:38+08:00" timestamp2="2021-04-22T08:25:10Z" # 将时间转换为 UTC 时间并获取 Unix 时间戳 time1=$(date -u -d "${timestamp1}" +%s) time2=$(date -u -d "${timestamp2}" +%s) # 计算时间差 diff=$((time1-time2)) echo "Time difference in seconds: $diff" ``` 上述脚本会将输入的时间戳转换为 Unix 时间戳,并计算两者之差[^1]。 --- ### 方法二:使用 Python 编写脚本来比较时间戳 Python 提供了强大的日期处理库 `datetime` 来解析 ISO 8601 格式的时间戳并进行运算。 ```python from datetime import datetime, timezone # 输入时间戳 timestamp1 = "2025-03-16T13:33:38+08:00" timestamp2 = "2021-04-22T08:25:10Z" # 解析时间戳 dt1 = datetime.fromisoformat(timestamp1).astimezone(timezone.utc) dt2 = datetime.fromisoformat(timestamp2.replace('Z', '+00:00')).astimezone(timezone.utc) # 计算时间差 delta = dt1 - dt2 print(f"Time difference: {delta.days} days, {delta.seconds} seconds") ``` 此代码片段能够正确解析带有时区偏移量的时间戳,并返回两者的天数和秒数差异[^2]。 --- ### 方法三:基于 Docker 日志功能间接验证时间戳 如果需要对比的是某个容器内的日志时间和外部指定时间,则可借助 `docker logs` 命令提取日志中的时间戳并与目标时间做比较。例如: ```bash CONTAINER_ID=cacf7a960d29 LOG_TIME="2023-04-29T19:22:53" # 获取自 LOG_TIME 后的日志条目 docker logs -t --since="$LOG_TIME" "$CONTAINER_ID" ``` 这一步骤可以帮助确认容器内部事件发生的具体时刻是否晚于给定的参考时间[^3]。 --- ### 总结 无论是采用 Shell 还是 Python 方案,均能有效完成对不同格式时间戳间差距的量化分析工作;而当涉及实际业务场景下的数据校验时,则可能还需要结合具体的上下文信息进一步细化逻辑设计[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_41611588

无论多少,您的打赏是我最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值