技术标签: scikitl-learn 人工神经网络 DNN 《机器学习实战——基于Scikit-Learn和TensorFlow》 TensorFlow 机器学习实战
《机器学习实战——基于Scikit-Learn和TensorFlow》
这是一本非常好的机器学习和深度学习入门书,既有基本理论讲解,也有实战代码示例。
我将认真阅读此书,并为每一章内容做一个知识笔记。
我会摘录一些原书中的关键语句和代码,若有错误请为我指出。
兴起的原因:
。。。。。。
与或非们
最简单的ANN架构之一。
heabiside和sgn两种阶跃函数。
单层感知器无法解决异或分类问题,可以使用多层感知器解决。
def heaviside(z):
return (z >= 0).astype(z.dtype)
def mlp_xor(x1, x2, activation=heaviside):
return activation(-activation(x1 + x2 - 1.5) + activation(x1 + x2 - 0.5) - 0.5)
x1s = np.linspace(-0.2, 1.2, 100)
x2s = np.linspace(-0.2, 1.2, 100)
x1, x2 = np.meshgrid(x1s, x2s)
z1 = mlp_xor(x1, x2, activation=heaviside)
z2 = mlp_xor(x1, x2, activation=sigmoid)
plt.figure(figsize=(10,4))
plt.subplot(121)
plt.contourf(x1, x2, z1)
plt.plot([0, 1], [0, 1], "gs", markersize=20)
plt.plot([0, 1], [1, 0], "y^", markersize=20)
plt.title("Activation function: heaviside", fontsize=14)
plt.grid(True)
plt.subplot(122)
plt.contourf(x1, x2, z2)
plt.plot([0, 1], [0, 1], "gs", markersize=20)
plt.plot([0, 1], [1, 0], "y^", markersize=20)
plt.title("Activation function: sigmoid", fontsize=14)
plt.grid(True)
一个MLP包含一个输入层,一个或多个被成为隐藏层的LTU层,以及一个被称为输出层的LTU组成的最终层。
除了输出层外,没层都包含一个偏移神经元,并且与下一层完全相连。
如果一个ANN有2个以及以上的隐藏层,则别成为深度神经网络(DNN)。
反向传播:略。
阶跃函数替换为逻辑函数,以便反向计算梯度。
略
def neuron_layer(X, n_neurons, name, activation=None):
with tf.name_scope(name):
n_inputs = int(X.get_shape()[1])
stddev = 2 / np.sqrt(n_inputs)
init = tf.truncated_normal((n_inputs, n_neurons), stddev=stddev)
W = tf.Variable(init, name="kernel")
b = tf.Variable(tf.zeros([n_neurons]), name="bias")
Z = tf.matmul(X, W) + b
if activation is not None:
return activation(Z)
else:
return Z
with tf.name_scope("dnn"):
hidden1 = neuron_layer(X, n_hidden1, name="hidden1",
activation=tf.nn.relu)
hidden2 = neuron_layer(hidden1, n_hidden2, name="hidden2",
activation=tf.nn.relu)
logits = neuron_layer(hidden2, n_outputs, name="outputs")
with tf.name_scope("loss"):
xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y,
logits=logits)
loss = tf.reduce_mean(xentropy, name="loss")
def shuffle_batch(X, y, batch_size):
rnd_idx = np.random.permutation(len(X))
n_batches = len(X) // batch_size
for batch_idx in np.array_split(rnd_idx, n_batches):
X_batch, y_batch = X[batch_idx], y[batch_idx]
yield X_batch, y_batch
with tf.Session() as sess:
init.run()
for epoch in range(n_epochs):
for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):
sess.run(training_op, feed_dict={X: X_batch, y: y_batch})
acc_batch = accuracy.eval(feed_dict={X: X_batch, y: y_batch})
acc_val = accuracy.eval(feed_dict={X: X_valid, y: y_valid})
print(epoch, "Batch accuracy:", acc_batch, "Val accuracy:", acc_val)
save_path = saver.save(sess, "./my_model_final.ckpt")
先从硬盘上加载模型参数,然后加载数据集即可。
神经网络的灵活性恰好是主要的短板:太多的超参数需要调整。
=> 交叉验证网格搜索
=> Oscar工具
逐渐增减调试过拟合和欠拟合情况、
逐步添加神经元的数量,知道出现过拟合。
可以使用更多的层次和神经元,然后提早结束训练来避免过度拟合。
dropout。
大多数情况隐藏层可使用ReLU。
输出可用sofmax,回归可不用。
一、使用同步定时器这个示例程序通过展示如何在一个定时器执行一个阻塞等待介绍ASIO。
做Android久了,就会踩很多坑,被坑的多了就有经验了,闲暇之余整理了部分,现挑选一些重要或者偏门的“小”经验做个记录。查看SQLite日志adb shell setprop log.tag.SQLiteLog Vadb shell setprop log.tag.SQLiteStatements V因为实现里用了Log
poj1270题目大意:按字典序输出所有拓扑排序./*dfs适合枚举所有组合,每次做出一个选择,到达边界,就完成了一次完整的枚举,对选择规定某种次序及约束,就可以完成按照需求顺序的枚举;无向图的dfs其实是dfs实现的bfs拓扑排序,每次选一个入度为零的点,进行深入;*/#include <iostream>#include <cstring>#include<string>#include <algorithm>#include<
在web应用中,对页面的访问控制通常通过程序来控制,流程为:登录 -> 设置session -> 访问受限页面时检查session是否存在,如果不存在,禁止访问对于较小型的web应用,可以通过tomcat内置的访问控制机制来实现权限控制。采用这种机制的好处是,程序中无需进行权限控制,完全通过对tomcat的配置即可完成访问控制。为了在tomcat页面设置访问权限控制,在项目的WEB-INF_linux中tomcat做目录访问权限设置,防止目录遍历
1、编写一算法,将X插入到不减有序序列的合适位置,让序列继续有序。(10分)#include#define N 100#define length 9int main(){int *Insert(int *A,int num,int len);int A[N]={3,5,7,9,13,23,27,29,38};int i,num;printf("原数列为:\n");for(i=0;iprintf(..._吉林大学计算机学硕复试
添加列名:pd.read_csv(file, header=None, names = ['a','b','c'] )names为指定的名字数据tab分隔的时候去读方式sep指定df = pd.read_csv('../input/data_train.csv',sep = '\t',encoding='GBK')..._pd.read_csv按列划分
2018-1-30一、UNIX、C语言以及Linux的历史回顾1. UNIX简史、C语言的诞生 1969年,贝尔实验室的Ken Thompson首次实现了UNIX系统。 1973年,C语言步入成熟期,人们以其重写了几乎整个UNIX内核。2. UNIX两大分支:BSD、System V 1969~1979年间,UNIX历经了多个版本,其中从第七版起,UNIX...
原文地址:http://blog.sina.com.cn/s/blog_548258eb0100j3lf.html作者:风神Session bean or MD bean对Entity bean的操作(包括所有的query, insert, update, delete操作)都是通过EntityManager实例来完成的。EntityManager是由EJB 容器自动地管理和配置的,不需要_em.createquery
kali自带python2python --version #查看python版本安装pipwget https://bootstrap.pypa.io/pip/2.7/get-pip.py #下载pippython get-pip.py #安装pippython -m pip -V #查看安装pip的版本_kali没有自带python2
在使用electron-packager打包的过程中,需要在第一次下载electron版本对应的zip文件,下载很缓慢,而且还可能出现每次都在下载zip的情况。解决思路是提前下载好zip文件并修改electron—packager源码将zip的路径指定到你放zip的文件目录,去规避packager自己去下载zip文件。实现更快的完成打包_electron linux
笔记自用_vue开发微信小程序
您好,问题原因应该是learning_rate的step默认的是30000步,您可以在lr_generator.py中调整learning_rate和damping这两个超参。2.在跑pretrain_eval.py使用的参数DATA_FILE,FINETUNE_CKPT怎么设置?答您可以在bert_thor/src/evaluation_config.py脚本中设置参数DATA_FILE,FINETUNE_CKPT。DATA_FILE,FINETUNE_CKPT怎么设置?..._:model execute task