#!/usr/bin/env python
# _*_ coding: utf-8 _*_
# @Time : 2018/6/2 9:55
# @Author : zand
# @File : tensorflow建造神经网络
import tensorflow as tf
import numpy as np
def add_layer(imputs, in_size, out_size, activation_function = None):
Weights = tf.Variable(tf.random_normal([in_size, out_size]))
biases = tf.Variable(tf.zeros([1,out_size]) + 0.1)
Wx_plus_b = tf.matmul(imputs,Weights) + biases
if activation_function is None:
outputs = Wx_plus_b
else:
outputs = activation_function(Wx_plus_b)
return outputs
x_data = np.float32(np.linspace(-1,1,300)[:,np.newaxis]) #构造输入数据x_data,-1到1区间,300个单位。np.newaxis新建一个维度。
noise = np.float32(np.random.normal(0,0.05,x_data.shape)) #构造噪声,使得不完全按照一元二次函数构造
y_data = np.square(x_data)-0.5 + noise
l1 = add_layer(x_data,1,10,activation_function=tf.nn.relu) #添加神经层,设置10个神经元,激活函数设置为tf.nn.relu。
prediction = add_layer(l1,10,1,activation_function=None) #添加神经层,激活函数设置为线性函数。
loss = tf.reduce_mean(tf.reduce_sum(tf.square(y_data - prediction),reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)
for _ in range(1000):
sess.run(train_step)
if _ % 50 == 0:
print(sess.run(loss))
|