用神经网络例子讲解TF运行方式~人工智能入门编程例子讲解

#用神经网络例子讲解TF运行方式

#import os          #防止出现警告
#os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
#P145 ###########生成及加载数据,###################
#构造满足方程y = x^2 - 0.5 的一些x y,同时加些噪声点
import tensorflow as tf 
import numpy as np 
#构造满足一元二次方程的函数
x_data = np.linspace(-1, 1, 300) [:, np.newaxis]	#300个点,分布在1到-1之间,采用np生成等差数列,把300个点的一维数组转化为二维数组
noise = np.random.normal(0, 0.05, x_data.shape) 		#加入一些噪声点,让它和x_data的维度一致,并且拟合为均值为0,方差为0.05的正态分布
y_data = np.square(x_data) - 0.5 + noise				#y = x^2 - 0.5 + 噪声
#定义x和y的占位符来作为将要输入神经网络的变量
xs = tf.placeholder(tf.float32, [None, 1])
ys = tf.placeholder(tf.float32, [None, 1])


########构建网络模型:隐藏层和输出层###############
'''
输入参数有四个变量:输入数据,输入数据的维度,输出数据的维度,激活函数。
每一层经过向量化(y = weights*x + biases)的处理,并且经过激活函数的非线性化处理后,最终得到输出数据。
'''
def add_layer(inputs, in_size, out_size, activation_function = None):
	#构建权重in_size*out_size大小的矩阵
	weights = tf.Variable(tf.random_normal([in_size, out_size]))
	#构建偏置:1 * out_size 的矩阵
	biases = tf.Variable(tf.zeros([1, out_size]) + 0.1)
	#矩阵相乘
	Wx_plus_b = tf.matmul(inputs, weights) + biases
	if activation_function is None:
		outputs = Wx_plus_b
	else:
		outputs = activation_function(Wx_plus_b)
	return outputs			#得到输出数据

#构建隐藏层,假设隐藏层有20个神经元
h1 = add_layer(xs, 1, 20, activation_function = tf.nn.relu)
#构建输出层,假设输出层和输入层一样,有一个神经元
prediction = add_layer(h1, 20, 1, activation_function = None)
#构建损失函数:对预测值和真实值差的平方求和,再取平均。运用梯度下降法,以0.1的学习速率最小化损失
#计算预测值和真实值误差
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction), reduction_indices = [1]))
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)

###########训练模型################################
#让TF训练1000次,每50次输出训练的损失值
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)

for i in range(1000):
	sess.run(train_step, feed_dict = {xs: x_data, ys: y_data})
	if i % 50 == 0:		#50次打印一次损失值
		print(sess.run(loss, feed_dict = {xs: x_data, ys: y_data}))



#######运行结果如下##########################
2018-01-04 15:38:29.500314: I 
C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\35\tensorflow\core\platform\cpu_feature_guard.cc:137] 
Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
3.58245
0.00528384
0.00375312
0.00341042
0.00323244
0.00309514
0.00301404
0.00297378
0.00294355
0.00292443
0.00289879
0.00288079
0.00286783
0.00285768
0.00284912
0.00284307
0.00283779
0.0028322
0.00281881
0.0027984
[Finished in 10.0s]

###########损失值越来越小,达到预期目标。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值