- 博客(53)
- 收藏
- 关注
原创 【学习笔记】卷积神经网络的过拟合
在上一部分我们发现严重的过拟合导致了我们的验证集准确率很低。这次我们将通过扩充数据集以及丢弃正则化(dropout)的方法来降低过拟合带来的影响。我们先来看一下dropout函数:import tensorflow as tfimport numpy as npx = np.array([1,2,3,4,5]).astype('float32')sess = tf.Sessio...
2018-12-16 03:36:37
2997
1
原创 养病中,介绍一下梯度和激活函数
养病中,不想继续写新东西了,先把之前一直想写但是没写的东西写一下。 谈梯度之前我们先谈谈方向导数:其中以上函数我们可以改写成向量的模式:向量为单位向量 其中 则被称为梯度。用倒三角(del)表示或grad f梯度的方向沿着函数值增长最快的方向。所以梯度下降则是沿着负梯度方向前进的。 激活函数:Relu:我们常用的激活函数有Relu,Sigmoi...
2018-12-12 15:20:34
564
原创 【学习笔记】cv2库基本用法
因身体状况欠佳,可能会暂缓更新。 之前我们提到了CNN过拟合问题,面对过拟合我们一般有两种方法来处理,第一种方法则是扩充数据集。在数据集给定的情况下,我们则不得不用已有图片,经过处理来扩充我们的数据集。我们这里以第一张猫为例来介绍下cv2的基本用法:import cv2img = cv2.imread('./dataset/cats_and_dogs_filtered/t...
2018-10-22 05:24:31
20809
1
原创 【学习笔记】自己动手制作数据集,以及第一个卷积神经网络(CNN)
数据集地址,这份数据集是猫的图片和狗的图片,是谷歌摘取了一部分Kaggle的猫狗分类图片集。这次我们并没有给出制作好的数据集,而是只有放在两个不同文件夹内的猫和狗的图片。我们第一步先用PIL把图片格式统一一下,我们这里将像素改为(150*150)。import osfrom PIL import Imagebase_dir = './dataset/cats_and_dogs_fi...
2018-10-20 16:22:51
9625
4
原创 【学习笔记】卷积神经网络简介
先给出原文连接还记得我们之前把mnist数据集的输入图片(28像素*28像素)压缩成了一个列表扔进了dnn当中,但我们写字的时候总不会按每行的像素点去写。因此我们之前的做法已经破坏了输入图片的一些特征,导致准确率并不算高(但是也不低了)。对图片的特征提取一直以来都是个难题,直到感受野的提出。在CNN当中我们不再对图片直接进行简单粗暴的降维处理,CNN接收的输入端是三维的,第一维和第二维对应...
2018-10-17 23:18:36
476
原创 TensorFlow 代码及用法(持续更新)
想到哪写到哪。也没准哪天直接鸽了。更新速度比较慢,因为还有其他东西要写。import tensorflow as tfimport numpy as npA加法:tf.add(x,y,name=None)>>>tf.Session().run(tf.add(3,5))8参数更新: 将new_value赋予statetf.assign(state...
2018-10-17 07:18:03
393
原创 【学习笔记】嵌入以及神经网络的保存和读取
我们之前用indicator的方式将数据multi-hot上,输出结果的shape为[batchsize,50],我们能不能对维度再次压缩呢?答案是可以的。这里我们将会运用embedding的方法。大体写法均没有动import tensorflow as tfdef _parse_function(record): """Extracts features and label...
2018-10-17 05:36:47
633
原创 【学习笔记】字符串转化为特征
在嵌套的练习中,我们首先要处理下tfrecord格式的文件,关于tfrecord的处理建议看一下这篇文章我们这里主要讲解一下对于得到的字符串如何转化为特征输入。先给出这次练习的: 训练集 验证集我这里创建一个输入字典:num = {'numbers': ['1', '1', '2', '3', '4', '5', '6'], 'prime': ['2', '3', '5', '...
2018-10-12 06:09:47
1024
原创 【学习笔记】softmax回归与mnist编程
我们之前谈到了2元分类,但是有时候我们需要多元分类,这时候sigmoid函数就不再适用了。假如我们需要三个分类,而输出层在激活函数之前得到的值为3.,4.,5. ,如果我们用sigmoid:sess.run(tf.nn.sigmoid([3.,4.,5.]))array([0.95257413, 0.98201376, 0.9933072 ], dtype=float32)我们可以...
2018-10-08 09:03:55
494
原创 【学习笔记】 训练神经网络编程练习(可能存在问题)
我们这里先按照原文要求把输入特征线性映射到-1到1区间import pandas as pdpd.set_option('display.max_columns', 10)def linear_scale(array): min = array.min() max = array.max() scale = (max - min)/2 array = ...
2018-10-07 18:33:58
276
原创 【学习笔记】 失败案例以及丢弃正则化
神经网络有很多情况导致反向传播算法出现问题:1.梯度消失:较低层(更接近输入层)的梯度非常小,计算这些梯度时可能涉及到很多小项的乘积,较低层的梯度逐渐消失到0时,这些层的训练会非常缓慢,甚至不再训练。ReLU激活函数有助于防止梯度消失。2.梯度爆炸:如果网络层的权重过大,则较低层的梯度会涉及到许多大项的乘积,在这种情况下梯度就会爆炸,难以收敛。批标准化可以降低学习速率有助于防止梯度爆炸。...
2018-10-02 14:37:30
306
原创 【学习笔记】 神经网络简介
之前我们其实已经写过了,这次既然原文单独列了一章,我们也来再写一次好了。原文希望我们把RMSE压到110以下,我这里验证集的RMSE 115左右,因随机数种子最低降到过112左右,在设定好种子的情况下seed(1) 验证集的rmse在116左右。上次我们用xs1,xs2,xs3...来得到特征集的tensor,如若columns太多,操作起来很繁琐,这次我把tensor压到了一个列表里,然后通...
2018-10-01 14:04:22
789
原创 【学习笔记】l1正则化编程
这里前提要求我们weights+biases的数量不能超过600个,并且loss(对数损失函数)的loss不能超过0.35 。现在让我们来处理数据集。这里我们是median_house_value作为targets,并且超过75%的设为1,低于75%的设为0。这里我们不再按照之前的写法,而是将所有的特征进行分箱。import numpy as npimport pandas as pd...
2018-10-01 00:02:31
1673
原创 【学习笔记】稀疏性正则化(l1正则化)
还记得我们之前用经度和纬度来进行分箱吗? 仅仅是2个特征进行分箱组合就让我们的输入特征数量暴增。假设我们现在有k个特征需要来分箱,每个分为长度为k的独热编码。那么我们输入特征就为 k^k个,这种指数增长会占用我们大量ram。这是我们需要办法来拯救我们的ram。那么一个好的方法就是让我们的部分权重为0,正好为0的权重会使相应特征从模型中移除。会节省我们的ram同时也会降低我们模型中的噪点。很遗憾...
2018-09-29 20:47:39
4325
原创 【学习笔记】分类编程练习
由于没有对特征进行处理(处理方法前面写过,懒得再写了,而且原文也没写),所以模型训练结果并不好。我们这里只是简单的讲解下,框架的搭建。文章线性回归的部分不再提及了,因为也就是改一两行代码的事。我们先将数据分为训练集 和验证集 并且创建一个新的column叫 median_house_value_high, 这个列是基于medain_house_value 来决定的,median_house...
2018-09-26 17:13:33
309
原创 【学习笔记】ROC简介
上次我们谈到逻辑回归,我们用sigmoid(仅用于二分法,至于多分类以后会谈(softmax)。输出的值在0~1之间,这时输出的是一个概率。我们也可以将输出结果改成二元值(是垃圾邮件或者不是垃圾邮件)。我们要设定一个概率,超过这个概率我们则认为是"垃圾邮件",低于的话,我们则认为不是。这个设定的概率就被称为 分类阈值(判定阈值)。之前在《深入浅出的数据分析》中我们提到过分类问题,这...
2018-09-26 01:07:05
2049
原创 【学习笔记】逻辑回归的损失函数
关于RMSE的问题我们以后再谈。先来看看官方给出的loss函数,我们用ys表示真实值,pred表示预测值(注意,这里是2分类问题):loss = tf.reduce_mean( -ys*tf.log(pred) - (1-ys)*tf.log(1-pred))如果你知道接触过交叉熵的话,这里我们能看到第一个求和项-ys*tf.log(pred)就是交叉熵的写法。这里不必深究,原文...
2018-09-25 00:08:27
851
原创 【学习笔记】逻辑回归
许多问题需要概率作为输出,逻辑回归是一种效率很高的概率计算机制。虽然我在这里没有提及,但是各位对机器学习感兴趣的基本都会用到过mnist数据集。 在我们读取数据集的一般是这么写的mnist = input_data.read_data_sets('MNIST_data/', one_hot=True)这里labels不再是一个值,而是独热码。>>>print(...
2018-09-24 14:06:46
287
原创 【学习笔记】正则化
正如我们之前在《深入浅出的数据分析》中的笔记提到过的一样,一个回归模型兼具 解释功能和预测功能。解释功能就是对当前的数据进行拟合,而预测功能则是对未出现的数据进行预测。在一个神经网络模型中我们同样也可以设置我们的侧重点:如果让模型具有更强的解释功能,我们就需要minimize(loss),这里称为 经验风险最小化如果让模型具有更强的预测功能,我们就要防止模型 过度拟合数据(过拟合)...
2018-09-23 16:12:05
382
原创 【学习笔记】特征组合编程练习
import numpy as npimport pandas as pdimport tensorflow as tfdf = pd.read_csv('california_housing_train.csv')def z_score(features): df = (features - features.mean()) / features.std() ret...
2018-09-23 03:16:45
731
原创 【学习笔记】特征组合
面对非线性问题,我们可能需要特征组合来解决问题。“特征组合是指通过将两个或多个输入特征相乘来对特征空间中的非线性规律进行编码的合成特征。”我们可以创建很多特征组合。 “在使用扩展的线性模型时辅以特征组合一直都是训练大规模数据集的有效方法。”在官方文档附带的 playground中,我们就会看到几种特征组合,通过组合x1x2来得到新特征。比如x1^2,x1*x2,还有sin(x1)等...
2018-09-22 12:15:56
1354
原创 【学习笔记】表示法练习
首先,良好的特征集是必要的前提,我们这里可以看相关系数。import pandas as pdpd.set_option('display.max_columns', None)df = pd.read_csv('california_housing_train.csv')print(df.corr())这里r的系数如果为1.0代表完全正相关,-1.0代表完全负相关, 0.0不...
2018-09-22 11:50:01
298
原创 【学习笔记】特征工程
将原始数据映射到特征称之为特征工程。之前看到一句话,说特征工程决定了神经网络的上限,而模型则是如何逼近这个上限。这句话还是有一定道理的。机器学习模型是根据浮点值进行训练,因此整数和浮点原始数据并不需要特殊编码。 对于字符串文中给出了独热码的方式。用过mnist应该对独热码的概念都挺熟悉。文中已经介绍的很清晰了,这里不再介绍了。 避免很少使用的离散特征值。良好的特征值应该在数...
2018-09-20 13:41:36
257
原创 【学习笔记】验证
文中先用经度纬度作为横纵坐标,用‘median_house_value'来作为colormap,import pandas as pdimport matplotlib.pyplot as pltdf = pd.read_csv('california_housing_train.csv', sep=',')validation_examples = df.tail(5000)t...
2018-09-19 14:34:57
484
原创 【学习笔记】验证集
这章与其他章不同,开头就给出了我们一个问题,并且称为“检查您的直觉”。与其说,谷歌在检查我们的直觉,不如说,谷歌在检查我们学习后有没有经过思考。如果只是一味的接收新的东西(机器学习概念以及一些代码的用法)。而不去思考这些结构问题的话,可能对我们并没有什么好处。原文在这里提出了一个尖锐的问题,如果我们针对训练集修改超参数,如果迭代多次的话,我们会不会不经意见拟合了训练集。虽然我们这里并没有直...
2018-09-19 09:13:31
826
原创 【学习笔记】训练集和测试集
之前我们在 《深入浅出的数据分析》中提到过,如果我们将散点图(只有一个特征,对应结果也只有一个)的相邻的点都用直线连上的话,我们就将所有数据都拟合了。然而这种模型对新数据的预测能力降大幅降低。为了防止过拟合的发生,同时也为了保证自己模型的预测能力,在机器学习中,我们将数据分为训练集 和测试集。训练集不用多说,自然是为了训练神经网络的。测试集则是为了对训练好的神经网络进行测试。 ...
2018-09-18 18:06:36
1197
原创 【学习笔记】泛化
我们设计模型很大程度上是为了预测未来的数据,而模型对当前数据的解释能力过高,往往会影响对未来数据的预测。这种预测能力我们称之为泛化能力。我们可以看到原图2中对当前数据的解释能力非常的强(拟合程度非常高),但是加入新数据后该模型的解释能力相当的低。过拟合往往是因为模型的复杂程度超过了我们所需要的程度。奥卡姆认为科学家应该优先采用更简单(而非更复杂)的公式或理论。奥卡姆剃刀定律在机器学习方...
2018-09-18 07:54:44
1661
原创 【学习笔记】合成特征与离群值 后记
import numpy as npimport tensorflow as tffrom tensorflow.data import Datasetimport pandas as pddef my_input_fn(features, targets, batch_size=1, shuffle=True, num_epochs=None): """Trains a l...
2018-09-18 07:30:15
272
原创 【学习笔记】合成特征与离群值
Dataset库我还有问题没有解决清楚,因此先用feed_dict方法。首先问题1是需要我们合成特征:创建一个名为 rooms_per_person 的特征。df = pd.read_csv('california_housing_train.csv')df['median_house_value'] /=1000df['rooms_per_person'] = df['tota...
2018-09-17 14:07:52
536
原创 【学习笔记】初见tensorflow
这篇文章让我们做线性回归。我们先加载必要的库import tensorflow as tfimport pandas as pdimport numpy as np 我们同样也需要读取数据df = pd.read_csv('california_housing_train.csv') 我们首选需要对数据进行随机处理,同时也对median_house_valu...
2018-09-16 18:45:38
263
原创 【学习笔记】再谈pandas
如果对于pandas库的操作基本已经忘记的话,我们这里来重新复习以下。我们首先导入pandas,我们这里也顺便导入numpyimport pandas as pdimport numpy as np文章首先提到了seriesimport pandas as pdimport numpy as nps1 = pd.Series(['San Francisco', 'San ...
2018-09-16 12:23:46
247
原创 【学习笔记】降低损失
机器学习模式是以迭代的方式来降低损失,这种方法有点像"Hot and Cold"这种儿童游戏,在游戏中,隐藏的物品就是最佳模型,刚开始我们会胡乱猜测,比如w=0,然后系统告诉我们损失是多少,然后我们再重新猜测一个值,看看损失是多少,通常我们会越来越接近目标。问题是我们如何尽可能高效的找到最佳的模型。迭代在机器学习中的应用非常普遍,这主要是因为他们可以很好的扩展到大型数据集。模型将特征(一个...
2018-09-16 09:57:56
882
原创 【学习笔记】线性回归
人们早就知道(并且找到了计算方法),相比凉爽的天气,在温度较高的时候,蟋蟀鸣叫更为频繁。这里文档给出了我们图片,我们拿一个直尺很容易就能画一条线来近似这种关系。 虽然该直线并没有精确的穿过每个点,但是我们还是能总结出大概的关系: y = w*x + b这里的 y 指预测标签(我们预估的值)。w指x的权重。b指偏差。x指特征。 我们可以画出无数条直线来预估这个图片...
2018-09-15 17:42:53
199
原创 【学习笔记】机器学习基本概念
官方网站:https://developers.google.cn/machine-learning/crash-course/ml-intro主要整理总结谷歌给出的官方课程(速学课程和实践课程),大部分以理论为主。监督式学习:机器学习系统通过学习如何组合输入信息来对从未见过的数据做出有用的预测。个人理解为就是有标签的学习。标签:标签则是我们要预测的事物,也就是线性回归中的...
2018-09-15 08:36:13
266
原创 【读书笔记】只有浅出没有深入的数据分析(附录)
书中(正文)未提及的内容:取样:1.调查2.置信区间3.标准误差4.样本均值显著性检验1.原假设了备择假设2.T检验3.卡方检验4.Z检验概率:1.乘法规则2.独立性3.二项式定理随机变量:1.平均律2.概率直方图3.正态逼近法4.盒子模型 分析设计的基本原则:1.“体现出,比较、对比、差异。”2.“体现出...
2018-09-15 07:56:31
232
原创 【读书笔记】只有浅出没有深入的数据分析(十三 )
这一章是数据的整理,不过说实话,这章数据处理的复杂程度远远低于上一章,根据给出的整理好的格式我们夜来将杂乱的数据处理一下。import pandas as pdimport numpy as npdf = pd.read_csv('./hfda_data/hfda_ch13_raw_data.csv')df1 = pd.DataFrame(np.zeros((1087, 7)))...
2018-09-14 15:34:27
172
原创 【读书笔记】只有浅出没有深入的数据分析(十二 )
这章的前提是“数据邦新闻”想让我们帮助分析销量。这里总共给了4个表格。import pandas as pddf1 = pd.read_csv('./hfda_data/hfda_ch12_articleHitsComments.csv')df2 = pd.read_csv('hfda_ch12_articles.csv')df3 = pd.read_csv('./hfda_data...
2018-09-14 14:20:57
249
原创 【读书笔记】只有浅出没有深入的数据分析(十一 )
上一章讲到我们的算法出了问题,我们现在来看看出了什么问题。 import pandas as pdimport numpy as npimport matplotlib.pyplot as pltdf = pd.read_csv('./hfda_data/hfda_ch10_employees.csv')x = np.linspace(0, 25, 100)plt.fi...
2018-09-14 05:51:19
187
原创 【读书笔记】只有浅出没有深入的数据分析(十 )
这一章是承接上一章的,这一章主要是回归问题,设计一个“加薪计算器”,也就是一种加薪算法。这里依旧给出了数据,先让我们把加薪者的要求和结果作成直方图:import pandas as pdimport numpy as npimport matplotlib.pyplot as pltdf = pd.read_csv('./hfda_data/hfda_ch10_employees...
2018-09-13 15:27:47
194
原创 【读书笔记】只有浅出没有深入的数据分析(九)
在第九章主要讲解了直方图的使用,直方图主要用来度量数据的“分布,差异,集中趋势等”。这里是“我们”想要加薪,但是也害怕被“打回原形”,或者被“封存”,这里给出了历年的加薪记录,这里有3000个人的记录。按照书中的思路,我们先看一下加薪的分布。import pandas as pdimport numpy as npimport matplotlib.pyplot as plt...
2018-09-13 10:28:51
191
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人