史晨辉的博客


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

机器学习中交叉熵的含义

发表于 2020-05-13 | 分类于 机器学习 |
字数统计: 923

交叉熵在分类任务中非常常见。

在训练分类模型时,我们常用one-hot编码不同种类,如有三类结果时,A类为[1, 0, 0],B类为[0, 1, 0],C类为[0, 0, 1]。

对于一个样本,我们模型的输出结果假如为为三个数[9, 2, -2],我们想把这三个数转化为三种类别的概率,并且三个概率和为1。不能简单的用a/(a+b+c)作为概率,因为概率不能有负值。通常用Softmax函数将三个数转化为三个概率,咱们先不管Softmax函数是怎么转化的,只需知道他把模型输出的三个数[9, 2, -2]转化成了概率[0.7, 0.2, 0.1] (随便写的概率值),然后可以看出这个样本应该A类。

我们想利用梯度下降法训练模型使得输出的结果转化成概率后更接近[1, 0, 0],有了这个想法后,损失函数就得定义成概率[1, 0, 0]和概率[0.7, 0.2, 0.1]之间的差异,然后通过梯度下降法修改参数使它们的差异逐渐减小。

而交叉熵就是描述[1, 0, 0]、[0.7, 0.2, 0.1]这两组概率之间差异的一个东西。

阅读全文 »

NumPy 学习

发表于 2020-04-20 | 分类于 数据分析 |
字数统计: 4.2k

本文是在学习numpy 的时候做的笔记,记录了numpy 的常用操作,方便用的时候查找。

1. 什么是NumPy,它有什么用

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

简单来说 NumPy 就是提供一个数组、矩阵存储和运算的库。与Python 自带的list 相似,不过速度更快,功能更多。

阅读全文 »

test-分类、标签

发表于 2020-04-14 | 分类于 test , Testing |
字数统计: 387

添加了分类和标签,添加方法

阅读全文 »

TensorFlow中tfrecords的使用

发表于 2020-04-10 | 分类于 TensorFlow |
字数统计: 1.6k

在训练模型的时候会有成千上万图片数据用来训练,如果一张张加载图片有两个缺点:一是速度慢,二是因为训练时还需要对图片进行增强(随即翻转、随机亮度调整等),会使程序代码变得复杂。

TFRecord 便可以解决此问题,它能将数据进行序列化并存储在一个或一组文件中,这样就可以高效的读取数据。

也就是将所有图片转换成二进制信息,全部存放在一个文件中。用的时候直接读取这个文件,并转换成dataset来使用。当然,二进制文件存放的还有图片的结构化信息(label、shape等)。

TERecord的官方介绍链接:https://www.tensorflow.org/tutorials/load_data/tfrecord#write_the_tfrecord_file 。不知道是版本原因还是什么,官方介绍中有的地方运行不出来。

阅读全文 »

TensorFlow读取单张图片并显示

发表于 2020-04-03 |
字数统计: 323

我们知道图片数据是一个三维数组,每个像素点有RGB三个值,图片源文件是将这个三维数组按一定形式编码然后存储的。

所以TensorFlow读取图片的步骤是:先直接按字节将图片源文件读取出,然后decode解码成三维张量(数组),张量再转换成ndarray,然后就可以显示图像了。

其中读取图片的原始信息的函数有两个:
tf.gfile.FastGFile(‘test.jpg’, ‘rb’).read()
tf.read_file(‘test.jpg’)

阅读全文 »

TensorFlow读取单张图片并显示

发表于 2020-04-03 | 分类于 TensorFlow |
字数统计: 323

我们知道图片数据是一个三维数组,每个像素点有RGB三个值,图片源文件是将这个三维数组按一定形式编码然后存储的。

所以TensorFlow读取图片的步骤是:先直接按字节将图片源文件读取出,然后decode解码成三维张量(数组),张量再转换成ndarray,然后就可以显示图像了。

其中读取图片的原始信息的函数有两个:
tf.gfile.FastGFile(‘test.jpg’, ‘rb’).read()
tf.read_file(‘test.jpg’)

阅读全文 »

TensorFlow 图像增强--随机翻转、随机亮度、对比度、色相等

发表于 2020-04-03 | 分类于 TensorFlow , 机器学习 |
字数统计: 1k

图像增强在有关图片的训练中是不可或缺的部分。原有数据集中的图片的泛化程度不高,不能代表所有此类型的图片,并且数据集图片的清晰度、亮度、图片中物体的大小相对来说比较片面。在原有数据集上训练好模型后,拿来一张高亮度的图片就会有很大可能识别不出来。所以我们有必要扩充数据集来提高模型的泛化程度。

数据增强是对原有图片的亮度、对比度、色相等随机调整,这样能使数据集涵盖的方面更广,扩充了数据集。对提高模型的泛化程度很有必要。

下面介绍一些TensorFlow中图片增强的常用方法。

阅读全文 »

TensorFlow 数据类型转换 cast

发表于 2020-04-03 | 分类于 TensorFlow |
字数统计: 142

tf.cast()函数的作用是执行 tensorflow 中张量数据类型转换,比如读入的图片如果是int8类型的,一般在要在训练前把图像的数据格式转换为float32。

cast定义:

1
cast(x, dtype, name=None)
  • 第一个参数 x: 待转换的数据(张量)
  • 第二个参数 dtype: 目标数据类型
  • 第三个参数 name: 可选参数,定义操作的名称

用法:

1
2
t1 = tf.Variable([1,2,3,4,5])
t2 = tf.cast(t1,dtype=tf.float32)
阅读全文 »

SQL常用查询语句

发表于 2020-03-20 | 分类于 数据库 |
字数统计: 2.3k

SQL常用语句、关键字,子查询,多表查询,连接查询等。

阅读全文 »

C++变量、限定符

发表于 2020-03-15 | 分类于 C/C++ |
字数统计: 761

C++算数类型变量

类型 含义 最小尺寸
bool 布尔类型 未定义
char 字符 8位
wchar_t 宽字符 16位
char16_t Unicode字符 16位
char32_t Unicode字符 32位
short 短整型 16 位
int 整形 16 位
long 长整型 32位
long long 长整型 64位
float 单精度浮点型 6位有效数字
double 双精度浮点型 10位有效数字
long double 拓展精度浮点数 10位有效数字

​ 除去布尔型和拓展的字符型之外,其他的整数可以划分为带符号的和无符号的,无符号的只能表示大于等于0的数。int、short、long、long long、都是带符号的,在前面加上unsigned就得到无符号类型。

选择类型时:

  • 知晓数值不可能为负时,选用无符号类型。
  • 使用int执行整形运算。如果int不够,选用long long,因为long和int一般有一样的尺寸。
  • 在算术表达式中不用使用char 和bool。
  • 执行浮点运算用double,别用float。因二者计算代价相差无几,甚至一些机器上double比float还快。
阅读全文 »
1…345
史晨辉

史晨辉

49 日志
17 分类
21 标签
© 2023 shichenhui | Site words total count: 37.7k
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4
豫ICP备17013015号