多层全连接神经网络模型的提出------- chapter1 身份证问题的引入 (站在高处望深渊,坠入深渊识攀爬)

"""
身份证问题的引入
"""

"""
多层全连接神经网络
身份证问题的引入
规则如下:
1.我们可知,身份证由18位数字组成
2.身份证的倒数第二个数字代表性别男女,奇数为男,偶数为女,这是一个很简单的基本规则
问题的由来:
加入我们不知道这个规则,但是收集了一大堆身份证,我们希望通过神经网络来寻找这个规律
"""

"""
问题分析:
已知信息由身份证号和它对应的持有者性别组成,
因此身份证号可以作为神经网络的输入
持有者可以作为神经网络计算结果的目标值
由于性别只有男女,所以本问题很明显是一个二分类问题
初步判断不是一个线性问题,因为线性问题会随着权重值的变化有一个线性变化的规律
如果我们预知了这个与性别有关的编号规则,会发现这也不是一个跳变的非线性问题
"""

"""
尝试解决问题:
我们尝试设计以往的单层网络模型来解决这个身份证问题
先构建一个身份证问题的单层神经网络模型图 如下
"""


import tensorflow as tf
import random

random.seed() #产生随机数种子

x = tf.placeholder(tf.float32)  #输入
yTrain = tf.placeholder(tf.float32) #目标值

w = tf.Variable(tf.random_normal([4], mean=0.5, stddev=0.1), dtype=tf.float32)  #w是一个4维的向量,其中每一个数字都被置为随机数,随机数符合正态分布
b = tf.Variable(0, dtype=tf.float32) #偏移量

n1 = w*x + b  #n1节点

y = tf.nn.sigmoid(tf.reduce_sum(n1)) #求n节点的和 并 用sigmoid函数输出y值 ,  y值 要么为0  要么为1

loss = tf.abs(y-yTrain)  #误差率

optimizer = tf.train.RMSPropOptimizer(0.01) #以0.01调整优化器

train = optimizer.minimize(loss) #以最小化原则调整误差率

sess = tf.Session()  #会话对象

sess.run(tf.global_variables_initializer())  #对可变参数进行初始化

lossSum = 0.0 #定义此变量记录训练中误差的总和

#开始模拟真实数据
for i in range(500):
    #产生四个随机0到9数字
    xDataRandom = [int(random.random()*10), int(random.random()*10), int(random.random()*10), int(random.random()*10)]
    if xDataRandom[2] % 2 == 0:
        yTrainDataRandom = 0
    else:
        yTrainDataRandom = 1;
    result = sess.run([train, x, yTrain, y, loss], feed_dict={x:xDataRandom, yTrain:yTrainDataRandom})
    lossSum = lossSum + float(result[len(result)-1])
    print("i:%d, loss:%10.10f, avgloss:%10.10f" % (i, float(result[len(result)-1]), lossSum/(i+1)))

运行结果如图:


可知 avgloss平均误差会在0.47这范围内浮动,基本稳定下来了,再加训练次数也不能使误差越来越小。这就说明目前的神经网络模型结构已经无法解决当前这个问题。

由此提出 多层全连接神经网络模型  

借由老铁的文语结束:站在高处望深渊,坠入深渊识攀爬
                    人不活一个点,  人活起伏   
ps:露露同学(老铁)一直是我崇拜的偶像,这么多年来,我很少看见女生这么优秀,真心的!点赞!
后续内容见下一章内容(记于2020.03.08 23:02)

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值