下面是用tensorflow建立的一个神经网络实现函数y=x^2+0.1
# -*- coding:utf-8 -*-
# -*- author: 时间行者 -*-
# -*- date: 2018-12-25 -*-
import tensorflow as tf
import numpy as np
def add_layer(inputs, in_size, out_size, activation_function=None):
weight = tf.Variable(tf.random_normal([in_size, out_size]))
biases = tf.Variable(tf.zeros([1, out_size]) + 0.1)
wx_plus_b = tf.matmul(inputs, weight) + biases
if activation_function is None:
outputs = wx_plus_b
else:
outputs = activation_function(wx_plus_b)
return outputs
x_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
xs = tf.placeholder(tf.float32, [None, 1])
ys = tf.placeholder(tf.float32, [None, 1])
h1 = add_layer(xs, 1, 20, activation_function=tf.nn.relu)
prediction = add_layer(h1, 20, 1, activation_function=None)
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction), reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
for i in range(1001):
sess.run(train_step, feed_dict={xs: x_data, ys: y_data})
if i % 20 == 0:
print('第'+str(i)+'次循环:', end=' ')
print('loss=', sess.run(loss, feed_dict={xs: x_data, ys: y_data}))
程序运行结果如下:
第0次循环: loss= 23.373762
第20次循环: loss= 0.048922796
第40次循环: loss= 0.021126091
第60次循环: loss= 0.013575307
第80次循环: loss= 0.0108266175
第100次循环: loss= 0.009445705
第120次循环: loss= 0.008533567
第140次循环: loss= 0.007823043
第160次循环: loss= 0.0072098654
第180次循环: loss= 0.006656323
第200次循环: loss= 0.006166407
第220次循环: loss= 0.005741052
第240次循环: loss= 0.0053734
第260次循环: loss= 0.00506666
第280次循环: loss= 0.004798221
第300次循环: loss= 0.004575958
第320次循环: loss= 0.004378302
第340次循环: loss= 0.004208824
第360次循环: loss= 0.004068568
第380次循环: loss= 0.003946499
第400次循环: loss= 0.0038447594
第420次循环: loss= 0.003752898
第440次循环: loss= 0.0036665448
第460次循环: loss= 0.0035842066
第480次循环: loss= 0.003507119
第500次循环: loss= 0.0034405235
第520次循环: loss= 0.0033825918
第540次循环: loss= 0.0033249354
第560次循环: loss= 0.0032722128
第580次循环: loss= 0.003223783
第600次循环: loss= 0.0031767637
第620次循环: loss= 0.0031365806
第640次循环: loss= 0.0030961405
第660次循环: loss= 0.0030544868
第680次循环: loss= 0.0030163706
第700次循环: loss= 0.002981162
第720次循环: loss= 0.0029485056
第740次循环: loss= 0.002916187
第760次循环: loss= 0.002882743
第780次循环: loss= 0.002852073
第800次循环: loss= 0.0028244334
第820次循环: loss= 0.002799506
第840次循环: loss= 0.002776182
第860次循环: loss= 0.0027535378
第880次循环: loss= 0.0027316187
第900次循环: loss= 0.0027101901
第920次循环: loss= 0.0026921076
第940次循环: loss= 0.002675853
第960次循环: loss= 0.002660744
第980次循环: loss= 0.002648002
第1000次循环: loss= 0.0026354636
Process finished with exit code 0