Java/面试题:Java 的垃圾回收(GC)

Java/面试题:Java 的垃圾回收(GC)

在 JVM 中,一个对象被判断为垃圾的标准是:没有其他对象引用。 # 在实现上,判断对象是否为垃圾的算法有两种: - 引用记数法 - 通过判断对象的被引用数量来判断对象是否可以被回收 - 每个对象实例都有一个引用计数器,被引用则 +1,完成引用则 -1 - 任何引用计数为 0 的对象实例都可以被当做垃圾 - 优点:实现简单,执行效率高,程序执行受影响较小 - 缺点:无法检测出循环引用的情况,导致内存泄露

阅读更多
PyTorch/[PyTorch 学习笔记] 2.2 图片预处理 transforms 模块机制

PyTorch/[PyTorch 学习笔记] 2.2 图片预处理 transforms 模块机制

PyTorch 的数据增强

我们在安装PyTorch时,还安装了torchvision,这是一个计算机视觉工具包。有 3 个主要的模块:

  • torchvision.transforms: 里面包括常用的图像预处理方法
  • torchvision.datasets: 里面包括常用数据集如 mnist、CIFAR-10、Image-Net 等
  • torchvision.models: 里面包括常用的预训练好的模型,如 AlexNet、VGG、ResNet、GoogleNet 等
阅读更多
Java/面试题:Java 虚拟机

Java/面试题:Java 虚拟机

  • 平台无关性是通过 字节码 + 虚拟机来实现的。Java 源码首先被编译成字节码,再由不同平台的 JVM 进行解析,在不同而平台上运行时不需要重新编译。Java 虚拟机在执行字节码的时候,把字节码转换成具体平台上的机器指令。
阅读更多
PyTorch/[PyTorch 学习笔记] 2.1 DataLoader 与 DataSet

PyTorch/[PyTorch 学习笔记] 2.1 DataLoader 与 DataSet

本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson2/rmb_classification/

人民币 二分类

实现 1 元人民币和 100 元人民币的图片二分类。前面讲过 PyTorch 的五大模块:数据、模型、损失函数、优化器和迭代训练。

数据模块又可以细分为 4 个部分:

  • 数据收集:样本和标签。
  • 数据划分:训练集、验证集和测试集
  • 数据读取:对应于PyTorch 的 DataLoader。其中 DataLoader 包括 Sampler 和 DataSet。Sampler 的功能是生成索引, DataSet 是根据生成的索引读取样本以及标签。
  • 数据预处理:对应于 PyTorch 的 transforms
阅读更多
PyTorch/[PyTorch 学习笔记] 1.5 autograd 与逻辑回归

PyTorch/[PyTorch 学习笔记] 1.5 autograd 与逻辑回归

本章代码:

自动求导 (autograd)

在深度学习中,权值的更新是依赖于梯度的计算,因此梯度的计算是至关重要的。在 PyTorch 中,只需要搭建好前向计算图,然后利用torch.autograd自动求导得到所有张量的梯度。

阅读更多
Python/使用多进程处理 DataFrame

Python/使用多进程处理 DataFrame

基本思路是,将DataFrame拆成若干组分,最后通过pandas.concat合并起结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def parallelize_dataframe(df, func, n_jobs=3, split_num=10):
## 拆分数据表
df_split = np.array_split(df, split_num)
pool = Pool(n_jobs)
df_list = []

## map操作
for df_element in tqdm_notebook(pool.imap(func, df_split), total=10000):
df_list.append(df_element)

## reduce操作
df = pd.concat(df_list)

## 关闭进程
pool.close()
pool.join()
return df

还可以使用tqdm在处理数据时显示进度条。

MySQL/面试题:如何调优 SQL

MySQL/面试题:如何调优 SQL

todo:应该参考陈阳的课程做一个系统的回答

SQL 的调优大致步骤如下:

根据慢日志定位慢查询SQL

MySql 中有很多系统变量,可以通过查询一些变量来获得 MySql 的一些配置信息。我们可以通过以下模糊查询语句来获得包含 query (SQL 查询)有关的系统变量。
阅读更多
PyTorch/[PyTorch 学习笔记] 1.4 计算图与动态图机制

PyTorch/[PyTorch 学习笔记] 1.4 计算图与动态图机制

本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson1/computational_graph.py

计算图

深度学习就是对张量进行一系列的操作,随着操作种类和数量的增多,会出现各种值得思考的问题。比如多个操作之间是否可以并行,如何协同底层的不同设备,如何避免冗余的操作,以实现最高效的计算效率,同时避免一些 bug。因此产生了计算图 (Computational Graph)。

阅读更多
PyTorch/[PyTorch 学习笔记] 1.3 张量操作与线性回归
PyTorch/[PyTorch 学习笔记] 1.2 Tensor(张量)介绍

PyTorch/[PyTorch 学习笔记] 1.2 Tensor(张量)介绍

本章代码:

Tensor 的概念

Tensor 中文为张量。张量的意思是一个多维数组,它是标量、向量、矩阵的高维扩展。

标量可以称为 0 维张量,向量可以称为 1 维张量,矩阵可以称为 2 维张量,RGB 图像可以表示 3 维张量。你可以把张量看作多维数组。

阅读更多