tensorflow创建一个简单的神经网络

下面是用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

猜你喜欢

转载自blog.csdn.net/qq_38226778/article/details/85253687
今日推荐