tensorflow-综合学习系列实例之神经网络

本文为大家讲解如何使用tf实现一个简单的神经网络:首先大家要知道神经网络的简单组成,一般来说一个神经网络会包含,输入层

,隐藏层,输出层....,例子很简单,主要是为了学会使用tf的核心步骤:这个是核心创建层的方法


下面是完整实现代码:

# author jiahp
# 创建一个简单的神经网络 包括 输入层 隐藏层 输出层

import tensorflow as tf
import numpy as np

#定义一个层的方法
# inputs 输入值
# in_size 输入层的数量
# out_size 输出层的数量
# activation_function 激励函数
def add_layer(inputs, in_size, out_size, activation_function=None):
    # 创建初始化权重
    Weights = tf.Variable(tf.random_normal([in_size, out_size]))
    # 创建一个常量的biases
    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

# 创建真实的训练数据
x_data = np.linspace(-1 ,1 ,300)[:, np.newaxis]

b = np.random.normal(0, 0.05, x_data.shape)

y_data = np.square(x_data) - 0.5 + b


# 定义神经网络的输入参数
xs = tf.placeholder(tf.float32, [None, 1])
ys = tf.placeholder(tf.float32, [None, 1])

# 通过输入层获取到隐藏层 这里需要一个激励函数
hidden_layer = add_layer(xs, 1, 10, activation_function=tf.nn.relu)

# 通过隐藏层获取到输出层 这里不再需要使用激励函数
prediction = add_layer(hidden_layer, 10, 1, activation_function=None)

# 计算真实数据和预测数据之间的误差 均方根误差
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),reduction_indices=[1]))
# 获取的loss
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)

# 初始化
init = tf.initialize_all_variables()
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:
        # 打印训练数值
        print(sess.run(loss, feed_dict={xs: x_data, ys: y_data}))


 
 

OK,代码写完了,其实神经网络的效率是比较低的,尤其是在数据量大或者维度很复杂的情况下,对应的输入神经元和隐藏神经元的计算量会呈指数复杂,所以一般使用它的情况下,需要考虑具体的业务需求和数据量,它并不是一无是处,只不过要合理的去使用它

猜你喜欢

转载自blog.csdn.net/qq_18603599/article/details/80549424