tensorflow建立一個簡單的神經網路
阿新 • • 發佈:2019-01-02
下面是用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