Linux/使用 awk 对日志内容做统计

Linux/使用 awk 对日志内容做统计

awk 是一个行编辑器,说明如下: - 一次读取一行文本,按照输入分隔符进行切片,,默认分隔符为空格,切成多个组成部分(多个切片) - 将切片直接保存在内建的变量中,$1、$2...($0 表示一整行) - 支持对单个切片的判断,支持循环判断
下面是使用 netstat -ntlp 查看网络状态
阅读更多
Java/Thread.yield() 函数

Java/Thread.yield() 函数

当调用 Thread 中的 yield() 函数时,会给线程调度器一个当前线程愿意让出 CPU 使用权的提示,但是线程调度器可能会忽略这个暗示。也就是线程调度器可能会继续执行该线程,也可能暂停这个线程。 如下例子:

阅读更多
PyTorch/[PyTorch 学习笔记] 5.2 Hook 函数与 CAM 算法

PyTorch/[PyTorch 学习笔记] 5.2 Hook 函数与 CAM 算法

本章代码:

这篇文章主要介绍了如何使用 Hook 函数提取网络中的特征图进行可视化,和 CAM(class activation map, 类激活图)

Hook 函数概念

Hook 函数是在不改变主体的情况下,实现额外功能。由于 PyTorch 是基于动态图实现的,因此在一次迭代运算结束后,一些中间变量如非叶子节点的梯度和特征图,会被释放掉。在这种情况下想要提取和记录这些中间变量,就需要使用 Hook 函数。

PyTorch 提供了 4 种 Hook 函数。

阅读更多
论文/Graph-Based Object Classification for Neuromorphic Vision Sensing 论文解读

论文/Graph-Based Object Classification for Neuromorphic Vision Sensing 论文解读

Title

Graph-Based Object Classification for Neuromorphic Vision Sensing

Summary

NVS 可以显著提高采样率,同时显著提高能量效率和对光照变化的鲁棒性。然而 NVS 不使用帧表示图像,所以不能利用最先进的循环神经网络(CNNs)。我们提出了一个基于 NVS 的紧凑的图表示,并使用结合残差网络来做分类,这种残差 Graph CNN 保持了尖峰事件的时空一致性,同时需要较少的计算和存储。 现在所有的图像识别的数据都是来源于 CMOS APS。然而 APS 的传感对于机器学习系统来说是很麻烦的,因为它的帧速率有限,帧间冗余度高,在变化的光照下快门调整缓慢而模糊,并且需要高功率。

阅读更多
Java/sleep() 和 wait() 的区别,以及 notify() 和 notifyall() 的区别

Java/sleep() 和 wait() 的区别,以及 notify() 和 notifyall() 的区别

sleep() 和 wait() 的区别

  • sleep() 是 Thread 类的方法,wait() 是 Object 类的方法
  • sleep() 方法可以在任何地方使用。wait() 方法只能在 synchronized 方法或者 synchronized 块中使用
  • 最主要的本质区别:Thread.sleep() 只会让出 CPU,不会使得当前线程释放锁,不会影响锁的相关行为。Object.wait() 不仅使得当前线程会让出 CPU,还会释放已经占用的同步资源锁。如下代码:
阅读更多
PyTorch/[PyTorch 学习笔记] 5.1 TensorBoard 介绍

PyTorch/[PyTorch 学习笔记] 5.1 TensorBoard 介绍

本章代码:

TensorBoard 是 TensorFlow 中强大的可视化工具,支持标量、文本、图像、音频、视频和 Embedding 等多种数据可视化。

在 PyTorch 中也可以使用 TensorBoard,具体是使用 TensorboardX 来调用 TensorBoard。除了安装 TensorboardX,还要安装 TensorFlow 和 TensorBoard,其中 TensorFlow 和 TensorBoard 需要一致。

阅读更多
PyTorch/[PyTorch 学习笔记] 4.3 优化器

PyTorch/[PyTorch 学习笔记] 4.3 优化器

本章代码:

这篇文章主要介绍了 PyTorch 中的优化器,包括 3 个部分:优化器的概念、optimizer 的属性、optimizer 的方法。

优化器的概念

PyTorch 中的优化器是用于管理并更新模型中可学习参数的值,使得模型输出更加接近真实标签。

optimizer 的属性

PyTorch 中提供了 Optimizer 类,定义如下:

阅读更多
Java/如何处理线程的返回值
PyTorch/[PyTorch 学习笔记] 4.2 损失函数

PyTorch/[PyTorch 学习笔记] 4.2 损失函数

本章代码:

这篇文章主要介绍了损失函数的概念,以及 PyTorch 中提供的常用损失函数。

损失函数

损失函数是衡量模型输出与真实标签之间的差异。我们还经常听到代价函数和目标函数,它们之间差异如下:

  • 损失函数(Loss Function)是计算一个样本的模型输出与真实标签的差异

    Loss \(=f\left(y^{\wedge}, y\right)\)

  • 代价函数(Cost Function)是计算整个样本集的模型输出与真实标签的差异,是所有样本损失函数的平均值

    \(\cos t=\frac{1}{N} \sum_{i}^{N} f\left(y_{i}^{\wedge}, y_{i}\right)\)

  • 目标函数(Objective Function)就是代价函数加上正则项

在 PyTorch 中的损失函数也是继承于nn.Module,所以损失函数也可以看作网络层。

阅读更多
Java/Object 的finalize() 方法是否与 C++ 的析构函数作用相同?

Java/Object 的finalize() 方法是否与 C++ 的析构函数作用相同?

Object 的finalize() 方法是否与 C++ 的析构函数作用相同?

  • 与 C++ 的析构函数不同,析构函数的调用时机是确定的,而 finalize() 方法的调用时机是不确定的
  • 当垃圾回收器要宣告一个对象死亡时,至少要经过两次标记。如果对象在进行可达性分析后,发现没有与 GC Roots 相连,就会被第一次标记,并且判断是否覆盖 finalize() 方法。如果对象覆盖了 finalize() 方法,并且没有与 GC Roots 相连,就会被放入 F-Qeueu 队列,并由稍后虚拟机建立的低优先级的 finalize 线程去执行触发 finalize 方法
阅读更多