其他分享
首页 > 其他分享> > 基于基础神经网络的实战演练(二)-简单的神经网络搭建

基于基础神经网络的实战演练(二)-简单的神经网络搭建

作者:互联网

《参考书籍》

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