100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Tensorflow--tutorial--建造神经网络(输入层 隐藏层 输出层)

Tensorflow--tutorial--建造神经网络(输入层 隐藏层 输出层)

时间:2023-10-29 01:48:43

相关推荐

Tensorflow--tutorial--建造神经网络(输入层 隐藏层 输出层)

建造一个完整的神经网络,包括添加神经层,计算误差,训练步骤,判断是否在学习。

代码如下:(我把注释写的非常详细,不用怕看不懂)

from __future__ import print_function#导入所需模块import tensorflow as tfimport numpy as np#定义添加神经层的函数def add_layer()#它有四个参数:输入值、输入的大小,输出的大小和激励函数def add_layer(inputs, in_size, out_size, activation_function=None):# add one more layer and return the output of this layerWeights = tf.Variable(tf.random_normal([in_size, out_size]))biases = tf.Variable(tf.zeros([1, out_size]) + 0.1)#推荐值不为0# 当激励函数为None时,输出就是当前的预测值——Wx_plus_b,不为None时# 就把Wx_plus_b传到activation_function()函数中得到输出。Wx_plus_b = tf.matmul(inputs, Weights) + biases#神经网络未激活的值if activation_function is None:outputs = Wx_plus_belse:outputs = activation_function(Wx_plus_b)return outputs#导入数据#怎样建造一个完整的神经网络,包括添加神经层,计算误差,训练步骤,判断是否在学习#这里的x_data和y_data并不是严格的一元二次函数的关系,# 因为我们多加了一个noise,这样看起来会更像真实情况。# Make up some real datax_data = np.linspace(-1,1,300)[:, np.newaxis]noise = np.random.normal(0, 0.05, x_data.shape)y_data = np.square(x_data) - 0.5 + noise#构建的是——输入层1个、隐藏层10个、输出层1个的神经网络。#利用占位符定义我们所需的神经网络的输入。 tf.placeholder()就是代表占位符,# 这里的None代表无论输入有多少都可以,因为输入只有一个特征,所以这里是1。xs = tf.placeholder(tf.float32, [None, 1])ys = tf.placeholder(tf.float32, [None, 1])'''接下来,我们就可以开始定义神经层了。 通常神经层都包括输入层、隐藏层和输出层。这里的输入层只有一个属性, 所以我们就只有一个输入;隐藏层我们可以自己假设,这里我们假设隐藏层有10个神经元; 输出层和输入层的结构是一样的,所以我们的输出层也是只有一层。 所以,我们构建的是——输入层1个、隐藏层10个、输出层1个的神经网络。'''# add hidden layer 搭建网络# 假设隐藏层有10个神经元#我们开始定义隐藏层,利用之前的add_layer()函数,这里使用 Tensorflow 自带的激励函数#tf.nn.relu。l1 = add_layer(xs, 1, 10, activation_function=tf.nn.relu)# add output layer#定义输出层。此时的输入就是隐藏层的输出——l1,输入有10层(隐藏层的输出层),输出有1层。prediction = add_layer(l1, 10, 1, activation_function=None)#计算预测值prediction和真实值的误差,对二者差的平方求和再取平均。loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),reduction_indices=[1]))#是很关键的一步,如何让机器学习提升它的准确率,# tf.train.GradientDescentOptimizer()中的值通常都小于1,# 这里取的是0.1,代表以0.1的效率来最小化误差loss。train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)# important step# tf.initialize_all_variables() no long valid from# -03-02 if using tensorflow >= 0.12if int((tf.__version__).split('.')[1]) < 12:#使用变量时,都要对它进行初始化,这是必不可少的。init = tf.initialize_all_variables()else:init = tf.global_variables_initializer()#定义Session,并用 Session 来执行 init 初始化步骤。# (注意:在tensorflow中,只有session.run()才会执行我们定义的运算。)sess = tf.Session()sess.run(init)#训练#我们让机器学习1000次。机器学习的内容是train_step,# 用 Session 来 run 每一次 training 的数据,逐步提升神经网络的预测准确性。# (注意:当运算要用到placeholder时,就需要feed_dict这个字典来指定输入。)for i in range(1000):# trainingsess.run(train_step, feed_dict={xs: x_data, ys: y_data})# 每50步我们输出一下机器学习的误差if i % 50 == 0:# to see the step improvementprint(sess.run(loss, feed_dict={xs: x_data, ys: y_data}))

运行结果如图所示:

新版Tensorflow在添加神经层那一块将只用一句话代替那些代码,如图:

真是方便!!!

输出的误差值在逐渐减小,表明机器学习是有积极的效果的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。