ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-12-03 20:03:44  阅读:226  来源: 互联网

标签:name train 神经网络 preprocessing tf import 演练 mnist 搭建


《参考书籍》

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有