根据上一篇的分析,我们搭建了神经网络模型,现在我们根据模型进行代码的实现
import random# 产生新的随机数种子
# random.seed()
# 生成0-1的随机小数
print(random.random())
# 生成1-10的随机数
print(random.random() * 10)
# 生成1-10的随机整数
num=random.random() * 10
print(int(num))
根据三好学习评选结果问题的分析,我们可以知道:
import randomrandom.seed()# 存放随机数:德育分、智育分、体育分
xData = [int(random.random() * 101), int(random.random() * 101), int(random.random() * 101)
]
# 总分=德育分x0.6+智育分x0.3+体育分x0.1,
xALL = xData[0] * 0.6 + xData[1] * 0.3 + xData[2] * 0.1
# 判断是否大于等于95,如果是则为1,否则为0
if xALL >= 95:yTrainData = 1
else:yTrainData = 0print("xData: %s" % xData)
print("yTrainData: %s" % yTrainData)
运行结果:
xData: [7, 47, 20]
yTrainData: 0
我们从上面的运行结果可以看见一个学生的成绩分别为:7,47,20,那么他的评选结果一定是0(表示不是三好学生),但是这样的分数太不正常了,一般的学生不能这么低的分数,下面我们进行优化处理,具体代码如下:
import randomrandom.seed()# 存放随机数:德育分、智育分、体育分
xData = [int(random.random() * 41+60), int(random.random() * 41+60), int(random.random() * 41+60)
]
# 总分=德育分x0.6+智育分x0.3+体育分x0.1,
xALL = xData[0] * 0.6 + xData[1] * 0.3 + xData[2] * 0.1
# 判断是否大于等于95,如果是则为1,否则为0
if xALL >= 95:yTrainData = 1
else:yTrainData = 0print("xData: %s" % xData)
print("yTrainData: %s" % yTrainData)
运行结果:
xData: [60, 79, 63]
yTrainData: 0
这样一个学生分数看起来合理了,但是“是三好学生”的数据可能会很少,我们需要再次进行优化,具体如下:
import randomrandom.seed()# 存放随机数:德育分、智育分、体育分
xData = [int(random.random() * 10+91), int(random.random() * 10+91), int(random.random() * 10+91)
]
# 总分=德育分x0.6+智育分x0.3+体育分x0.1,
xALL = xData[0] * 0.6 + xData[1] * 0.3 + xData[2] * 0.1
# 判断是否大于等于95,如果是则为1,否则为0
if xALL >= 95:yTrainData = 1
else:yTrainData = 0print("xData: %s" % xData)
print("yTrainData: %s" % yTrainData)
xData: [99, 93, 100]
yTrainData: 1
根据上一章神经网络模型和结合本章的训练数据,我们可以实现完整的神经网络模型,具体代码如下:
# Author:北京
# QQ:838262020
# time:2021/4/6
import tensorflow as tf
import randomrandom.seed()x = tf.placeholder(dtype=tf.float32)
yTrain = tf.placeholder(dtype=tf.float32)
w = tf.s([3], dtype=tf.float32))wn = tf.nn.softmax(w)n1 = wn * xn2 = tf.reduce_sum(n1)y = tf.nn.sigmoid(n2)loss = tf.abs(yTrain - y)optimizer = tf.train.RMSPropOptimizer(0.1)
train = optimizer.minimize(loss)sess = tf.Session()
sess.run(tf.global_variables_initializer())for i in range(5):# 存放随机数:德育分、智育分、体育分xData = [int(random.random() * 10 + 91), int(random.random() * 10 + 91), int(random.random() * 10 + 91)]# 总分=德育分x0.6+智育分x0.3+体育分x0.1,xALL = xData[0] * 0.6 + xData[1] * 0.3 + xData[2] * 0.1# 判断是否大于等于95,如果是则为1,否则为0if xALL >= 95:yTrainData = 1else:yTrainData = 0result=sess.run([train,x,yTrain,n2,y,loss],feed_dict={x:xData,yTrain:yTrainData})print(result)
我们就要对模型进行优化,加入偏移量b加快训练过程,目的使n2的总分最好再【-5,5】区间内,这样sigmoid激活函数,运算更加快速。如我们n2上减80,具体代码如下:
# Author:北京
# QQ:838262020
# time:2021/4/6
import tensorflow as tf
import randomrandom.seed()x = tf.placeholder(dtype=tf.float32)
yTrain = tf.placeholder(dtype=tf.float32)
w = tf.s([3], dtype=tf.float32))
# 偏移量b
b=tf.Variable(80,dtype=tf.float32)wn = tf.nn.softmax(w)n1 = wn * xn2 = tf.reduce_sum(n1)-by = tf.nn.sigmoid(n2)loss = tf.abs(yTrain - y)optimizer = tf.train.RMSPropOptimizer(0.1)
train = optimizer.minimize(loss)sess = tf.Session()
sess.run(tf.global_variables_initializer())for i in range(5000):# 存放随机数:德育分、智育分、体育分xData = [int(random.random() * 10 + 91), int(random.random() * 10 + 91), int(random.random() * 10 + 91)]# 总分=德育分x0.6+智育分x0.3+体育分x0.1,xALL = xData[0] * 0.6 + xData[1] * 0.3 + xData[2] * 0.1# 判断是否大于等于95,如果是则为1,否则为0if xALL >= 95:yTrainData = 1else:yTrainData = 0result=sess.run([train,x,yTrain,n2,y,loss],feed_dict={x:xData,yTrain:yTrainData})print(result)
我们可以先生成一批数据,然后在进行训练,具体如下:
# Author:北京
# QQ:838262020
# time:2021/4/6
# Author:北京
# QQ:838262020
# time:2021/4/6
import tensorflow as tf
import random
import numpy as nprandom.seed()rowCount = 5xData = np.full(shape=(rowCount, 3), fill_value=0, dtype=np.float32)
yTrainData = np.full(shape=rowCount, fill_value=0, dtype=np.float32)goodCount = 0# 生成随机训练数据
for i in range(rowCount):xData[i][0] = int(random.random() * 10 + 91)xData[i][1] = int(random.random() * 10 + 91)xData[i][2] = int(random.random() * 10 + 91)xALL = xData[i][0] * 0.6 + xData[i][1] * 0.3 + xData[i][2] * 0.1# 判断是否大于等于95,如果是则为1,否则为0if xALL >= 95:yTrainData[i] = 1goodCount += 1else:yTrainData[i] = 0
print("xData= %s" % xData)
print("yTrainData=%s" % yTrainData)
print("goodCount=%d" % goodCount)'''
神经网络模型
'''
x = tf.placeholder(dtype=tf.float32)
yTrain = tf.placeholder(dtype=tf.float32)
w = tf.s([3], dtype=tf.float32))
# 偏移量b
b = tf.Variable(80, dtype=tf.float32)wn = tf.nn.softmax(w)n1 = wn * xn2 = tf.reduce_sum(n1) - by = tf.nn.sigmoid(n2)loss = tf.abs(yTrain - y)optimizer = tf.train.RMSPropOptimizer(0.1)
train = optimizer.minimize(loss)sess = tf.Session()
sess.run(tf.global_variables_initializer())for i in range(2):for j in range(rowCount):result = sess.run([train, x, yTrain, n2, y, loss], feed_dict={x: xData[j], yTrain: yTrainData[j]})print(result)
运行结果:
xData= [[ 98. 95. 98.][ 92. 99. 97.][ 93. 92. 96.][ 94. 94. 97.][ 98. 94. 97.]]
yTrainData=[ 1. 0. 0. 0. 1.]
goodCount=2
2021-04-06 19:52:57.717868: I C:tf_jenkinshomeworkspacerel-winMwindowsPY36tensorflowcoreplatformcpu_feature_guard:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
[None, array([ 98., 95., 98.], dtype=float32), array(1.0, dtype=float32), 17.0, 1.0, 0.0]
[None, array([ 92., 99., 97.], dtype=float32), array(0.0, dtype=float32), 16.0, 0.99999988, 0.99999988]
[None, array([ 93., 92., 96.], dtype=float32), array(0.0, dtype=float32), 13.666664, 0.99999881, 0.99999881]
[None, array([ 94., 94., 97.], dtype=float32), array(0.0, dtype=float32), 15.000008, 0.99999964, 0.99999964]
[None, array([ 98., 94., 97.], dtype=float32), array(1.0, dtype=float32), 16.333336, 0.99999988, 1.1920929e-07]
[None, array([ 98., 95., 98.], dtype=float32), array(1.0, dtype=float32), 17.0, 1.0, 0.0]
[None, array([ 92., 99., 97.], dtype=float32), array(0.0, dtype=float32), 16.0, 0.99999988, 0.99999988]
[None, array([ 93., 92., 96.], dtype=float32), array(0.0, dtype=float32), 13.666672, 0.99999881, 0.99999881]
[None, array([ 94., 94., 97.], dtype=float32), array(0.0, dtype=float32), 15.0, 0.99999964, 0.99999964]
[None, array([ 98., 94., 97.], dtype=float32), array(1.0, dtype=float32), 16.333328, 0.99999988, 1.1920929e-07]
本文发布于:2024-01-28 14:17:33,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064226568019.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |