几种神经网络的定义/结构/用途

人工神界网络

定义

分为多层的机器学习算法,将上一层的输出作为下一层的输入,直到最后一层输出

结构

用途

用于基本的分类或者预测学习,是一种基础的神经网络机器学习算法

卷积神经网络(CNN)

定义

同样为多层的神经网络,每次使用relu激励函数加上卷积层和池化层进行处理,最后通过全连接层输出

结构

作用

主要用在图像识别,每次卷积/池化都能过滤信息,最终得到判断结果

循环神经网络(RNN)

定义

把神经网络上次的输出作为输入之一再次进行运算的神经网络结构

结构

用途

主要用于有顺序的场景,比如语义和语法等具有连续性的场景学习,但是每次只接收上一次的[……]

Read more

协同过滤推荐算法相关步骤和细节

推荐算法分类

1.基于内容的推荐算法
2.协同过滤推荐算法

基于内容推荐

1.需要知道每个项目的特征,以及详细的特征值,比如一个电影的爱情元素占比,动作成分占比等
2.需要用户事先评价几部电影,得到用户的评分特征向量,比如,对动作电影的偏好程度等
3.把特征和用户偏好相乘,得到预估得分,得到推荐结果集

基于内容算法弊端

需要详细知道每个元素的具体特征和值,这是基本不可能实现的

协同过滤推荐算法

1.随机初始化用户偏好θ和项目特征x
2.直接使用代价函数同时求上述两个随机变量的最优解,梯度下降或者高级算法均可
3.预测过程与内容推荐相同

协同过滤的优点

1.不需要知道x的具体内[……]

Read more

机器学习算法性能的检测和调优方法【方法+代码】

常见的几种方法

1.收集更多样本
2.使用更小规模的方法
3.增加方法的规模
4.使用多项式
5.增加正则化参数λ

如何判断下一步该采用什么方法

引入概念,误差(error),可用下面公式求得

对于线性回归:

对于分类算法:

如何划分我们的样本

按照比例6:2:2划分为三个样本,训练集,验证集,测试集
训练集:找到方法参数theta
验证集:确定方法多项式的度数d
测试集:确定正则化参数λ

通过学习曲线来确定高方差/高偏差

[W6]机器学习应用建议

根据学习曲线来选择要使用哪种优化方法

同上

代码部分

1.error的计算代码

[crayon-5a89d76f[……]

Read more

神经网络算法的代码分析【对应步骤分析文章】

使用Octave软件进行编辑

1.代价函数以及其正则化

2.激励函数的导数

3.随机初始化参数

4.向后递推求梯度grad并对其正则化

5.进行梯度检查,检查得到的grad是否正确

6.获取优化参数

[crayon-5a89d76fa45f128[……]

Read more

神经网络算法的实现步骤和细节处理【公式部分】

算法步骤

1.确定算法层次模型,有几层,几个隐藏层,每层有多少节点

2.使用feedforward算法计算出,a2,a3,z2,z3

3.写出代价函数J,并对其进行正则化

4.写出激励函数sigmoid的导数表达式

5.随机初始化参数Theta

6.使用向后递推法获取每层的grad,具体步骤如下

6.1获取输出层的误差

6.2获取其他层的误差

6.3获取每层的delta


7.进行梯度检查,检查向后递推所得的值的正确性


8.使用fmincg等高级优化方法传入我们所得的代价函数J和grad,获得最优化参数Theta

9.使用向前推导法[……]

Read more

springboot配置mybatis结合xml配置mapper的过程

文章目的

最近接触到springboot,用来初始化项目非常方便,于是拿来初始化了一下mybatis,结果发现,网上大部分的文章都是用注解方法进行mapper配置。
大家都知道,mybatis的一个特点就是所有的sql都在xml里,方便管理,还可以使用动态sql。
于是我开始尝试使用xml配置mapper,过程中遇到了一点点问题,现记录。

使用工具 idea-IU-172.4343.14

第一步,新建项目,步骤如下

1.选择spring init

2.输入信息,第二个是项目名

3.搜索添加要用的依赖,这里注意右边,我选择了三个,web,mybatis,postgresql(也可以选[……]

Read more

计算一组字符串的全排列[java]

问题

给出字符串”abc”计算其全排列
如abc,acb,bac,bca,cab,cba

思路

使用递归方法,每次确定一个未使用的字符,再递归寻找下一个未使用的字符,直到生成字符串长度与原来的长度相同,就返回,每次返回之后,要把这次的字符取消标记

伪代码

java完整代码

记一道坑很多的模拟题864C[Bus]

题目地址

http://codeforces.com/contest/864/problem/C

题目大意

总路程a,油箱容量b,加油站离出发点f,总共要跑k趟,问,至少需要加油多少次

分析

以每次到达加油站为基准点,判断是否可以跑完下一个端点–加油站的行程,如果可以,不加油,不可以,加油

有几种特殊情况
1.沿着当前方向,跑到端点结束,没有再从端点回加油站的过程
2.根本跑不到加油站
3.沿着当前方向,加一次油跑到下一个端点,结束

代码

开源数据库Postgresql安装/卸载总结

What Postgresql

一个开源数据库,类似mysql,由于mysql被收购了,这个数据库正被越来越多的使用

怎么安装?

安装非常简单,但是安装过后的初始化还是有点麻烦,具体可以看这篇文章

为什么要卸载?

安装好之后,如果你很倒霉的话,会遇到postgresql服务怎么都启动不了,输入psql指令显示没有服务的情况。
这时候,我们首先会使用apt-get remove postgresql删除软件,再重装,可不幸的是,这样是不行的!

怎么彻底删除?

遇到这种奇怪问题的不只一个人,所以我再stackoverflow找到了答案,下面就搬运过来,记录一下。
步骤如下

[cra[……]

Read more

Python中关于模块之间互相调用的总结

问题

在python里,假设我们有两个模块,A,B,在模块a中有文件a1,模块b中有文件b1.
结构如下
–a
—a1
–b
—b1
那么,在b1文件中调用a1里的方法,就会出现import error,告诉我们找不到这个模块

解决方法

对于这类问题解决方法很简单,由于他们的父级目录都是相同的,我们只需要在模块a中加入一个空的文件init.py(必须是这个名字,下划线前后都是两个),就可以将目录a转化为libroot。我们的调用这时候也就可以进行了。

更复杂的情况

上面的情况比较简单,但是往往我们使用的过程中会有更加复杂的情况,比如下面
–MyProject
—[……]

Read more