基于基础神经网络的实战演练(二)-简单的神经网络搭建
作者:互联网
《参考书籍》
95-神经网络与深度学习-邱锡鹏
98-动⼿学深度学习-9月最新版
十、人工神经网络介绍,十一、训练深层神经网络,十二、分布式TensorFlow
感知器,输入的数字和权重相连,形成总和,然后再用阶跃函数去处理其总和
训练感知器就是在训练其权重
上图就是最简单的单一的LTU,是作为简单的线性二元分类
Q1:bias神经元?
Q2:LTU中,当两个神经元具有相同的输出时,他们之间连接的权重就会增加——不加强导致错误输出的连接?
Q4:每个输出神经元的决策边界是线性的是什么意思?
Q10:为何要取iris.data[:,(2,3)]
Q11:啥地方需要用上xx.astype(np.int)
X是一个类似于(2,3)的元组,来装载着花瓣的长度和宽度
Q3:这个公式到底是啥?
https://mp.weixin.qq.com/s/My-G5-tw4iOU8jwaOsBPUA
调整感知器的超参数
Q5:他在干什么?
Q6:SGD分类器是啥?penalty是啥
Q7:感知器不输出类概率,而是基于硬阈值进行预测?
Q8:XOR异或分类问题,线性分类问题
Q9:MLP通过堆叠多个感知器LTU来解决异或XOR问题
预留个档期:几个分类器之间的对比、联系以及区别,验证其优劣性能的方式
训练多层LTU——MLP的方法——反向传播训练算法
用TensorFlow高级API训练MLP
【设置特征列feature columns】
【将特征列载入DNNClassifier】
【使用fit进行调整】
Q1:DNN是干啥的
Q2:学会实战:在MNIST数据集上运行这个代码,使用sklearn StandardScaler
【【调包】】
【数据分析的Numpy包,Perceptron线性拟合?iris的数据包-下载iris数据】
【【下载和调整数据的格式类型】】
【定义对应的X,Y的如何从iris中取出】
【【修正拟合预测的套路】】
【使用Perceptron,fit,predict】
跟上面的做好区分,用高级的API接口还是低级的API接口,取决于你想对这个神经网络的架构施加更加底层的改变,还是以方便为主的直接控制
用不上的退化代码能看懂,知道内层逻辑就行,不用花时间背诵了
转折,前面的代码能看懂就行,后面的代码也不用背,直接背最后一段就行
阅读代码的问题记录
Q3:truncated_normal
Q2:with xxx:?
Q1:这个StandardScaler怎么使用?
https://www.cnblogs.com/lvdongjie/p/11349701.html
几个预处理的操作都介绍的比较清楚
Python预处理sklearn.preprocessing
归一化-MinMaxScaler
标准化-StadnardScaler
正则化-Normalizer
00-调库
0-tensorflow,mnist,accuracy_score,numpy的库 调取数据,t框架,精确度的衡量
0-设置神经网络各层的神经元数量,比如:输入层,输出层,隐藏层这类的
0-划分训练集和测试集
0-设立网络层级
0-设立损失函数和学习率
0-设立优化器
0-计算精确度
##调库
#tensorflow,精确度,数组矩阵的库
from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf
from sklearn.metrics import accuracy_score
import numpy as np
#设立各层神经元个数
if _name_ == '_main_':
n_inputs = 28*28
n_hidden1 = 300
n_hidden2 = 100
n_outputs = 10
#调取输入mnist数据集
mnist = input_data.read_data_sets("/tmp/data/")
#划分训练集和测试集
x_train = mnist.train.images
x_test = mnist.test.images
y_train = mnist.train.labels.astype("int")
y_test = mnist.test.labels.astype("int")
x = tf.placeholder(tf.float32, shape=(None, n_inputs), name='x')
y = tf.placeholder(tf.int64, shape=(None), name='y')
with tf.name_scope('dnn'):
hidden1 = tf.layers.dense(x, n_hidden1, activation=tf.nn.relu, name='hidden1')
hidden2 = tf.layers.dense(hidden1, n_hidden2, name='hidden2', activation=tf.nn.relu)
logits = tf.layers.dense(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')
learning_rate = 0.01
#训练
with tf.name_scope('train'):
optimizer = tf.train.GradientDescentOptimizer(learning_rate)
training_op = optimizer.minimize(loss)
#eval?
with tf.name_scope('eval'):
correct = tf.nn.in_top_k(logits, y, 1) #是否与真值一致,返回布尔值
accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))
init = tf.global_variables_initializer()
n_epochs = 20
batch_size = 50
with tf.Session() as sess:
init.run()
for epoch in range(n_epochs):
for iteration in range(mnist.train.num_examples // batch_size):
x_batch, y_batch = mnist.train.next_batch(batch_size)
sess.run(training_op, feed_dict={x:x_batch, y:y_batch})
acc_train = accuracy.eval(feed_dict={x:x_batch,y:y_batch})
acc_test = accuracy.eval(feed_dict={x:mnist.test.images,y:mnist.test.labels})
print(epoch,"Train accuracy:", acc_train, "Test accuracy:", acc_test)
出现SyntaxError: invalid syntax问题
显示对应的里边没有属性,可能是Import as from import这块弄错了,版本不同,语法不同
Array[]里边到底塞什么,你没有太理解
常见的array数组创建方法,与List()对比
一维数组跑不通,换成二维数组再试试
二维数组又出了点问题
方括号外边的方括号
IndentationError: unindent does not match any outer indentation level
https://www.sogou.com/link?url=hedJjaC291MPna5SxlQUxvo1ussxymppzvrb88k-uwZPQbKAG378IQ..
应该是空格符和制符号的问题
这个地方貌似确实多空格了一些
各种源代码不再适合的问题,版本老了
版本不同的问题也可以通过迁移文件来解决
https://www.cnblogs.com/lvdongjie/p/11349701.html
归一化MinMaxScaler
#数据预处理-归一化
#假设待预处理数据列表
#preprocessing.MinMaxScaler(),归一化方法装箱,再调用fit_transform()
#输出修改值
import numpy as np
from sklearn import preprocessing
XXX=np.array([[1,5],[2,3]])
min_max_scaler=preprocessing.MinMaxScaler()
XXX_minmax=min_max_scaler.fit_transform(XXX)
print(XXX_minmax)
标准化StandardScaler
#调包,调取numpy和preprocessing两个包
#虚设待处理数组
#标准化处理方式
#输入数组的均值和方差玩一玩
#调包,调取numpy和preprocessing两个包
from sklearn import preprocessing
import numpy as np
#虚设待处理数组
x = np.array([[1,2],[2,3]])
#标准化处理方式
x_scaled = preprocessing.scale(x)
#输入数组的均值和方差玩一玩
print(x_scaled)
print(x_scaled.mean)
print(x_scaled.std)
正则化Normalizer
from sklearn import preprocessing
import numpy as np
x = np.array([[1,2],[3,4]])
x_normalized = preprocessing.normalize(x, norm='12')
print(x_normalized)
这篇预处理的三种方式写的还不错Python数据预处理(sklearn.preprocessing)—归一化(MinMaxScaler),标准化(StandardScaler),正则化(Normalizer, normalize) - Avatarx - 博客
标签:name,train,神经网络,preprocessing,tf,import,演练,mnist,搭建 来源: https://blog.csdn.net/weixin_51117061/article/details/121705549