构建一个完整的神经网络,包括添加自定义网络层、计算误差、训练步骤等
import tensorflow as tf
import numpy as np
自定义网络层
def my_layer(inputs, in_size, out_size, activation_function=None):
w = tf.Variable(tf.random_normal([in_size, out_size])) # 因为在生成初始参数时,随机变量(normal distribution)会比全部为0要好很多,所以我们这里的weights为一个in_size行, out_size列的随机变量矩阵。
bias = tf.Variable(tf.zeros([1, out_size])+0.1) # 在机器学习中,biases的推荐值不为0,所以我们这里是在0向量的基础上又加了0.1。
# 下面,我们定义Wx_plus_b, 即神经网络未激活的值。其中,tf.matmul()是矩阵的乘法。
Wx_plus_b = tf.matmul(inputs, w) + bias
# 当activation_function为None时,输出就是当前的预测值——Wx_plus_b,不为None时,就把Wx_plus_b传到activation_function()函数中得到输出。
if activation_function is None:
outputs = Wx_plus_b
else:</