深度学习二:使用TensorFlow搭建简单的全连接神经网络
学习《TensorFlow实战Google深度学习框架》一书
在前一篇博客中,学习了使用python搭建简单的全连接神经网络
这里继续学习使用TensorFlow来搭建全连接神经网络。文章结束后依旧会贴上全部代码
实验环境:Python+TensorFlow+Pycharm
实验依旧采用随机生成的数据集,用随机生成的x来拟合随机生成的y
首先是引入并生成随机数据:
import tensorflow as tf
from numpy.random import RandomState
import matplotlib.pyplot as plt
# 随机生成数据集,并自定义标签
rdm = RandomState(1)
dataset_size = 128 # 数据集大小
X = rdm.rand(dataset_size, 2)
Y = [[int(x1+x2 < 1)] for (x1, x2) in X] # 生成标签
生成的输入X维度为(128,2),标签Y的维度为(128,1),可以认为输入为产品两个属性值x1和x2,如果x1+x2<1则被认为是合格产品,标签为Y为1,否则标签Y为0。
定义输入输出:
# 定义输入和标签(真实值)
x = tf.placeholder("float32", [None, 2])
y_ = tf.placeholder("float32", [None, 1])
这里的x和y_用来接收输入的X和Y
设置神经网络的参数:
# 权重
W1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1))
W2 = tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1))
# 偏置
b1 = tf.Variable(tf.zeros([3]))
b2 = tf.Variable(tf.zeros([1]))
这里定义的是但隐层神经网络,w1和b1是隐藏层的权重和偏置,w2和b2是输出层的权重和偏置。设计隐藏层有3个隐藏节点,所以,w1的维度为(2,3)。Tenorflow提供了多种随机数生成的函数,这里使用tf.r的andom_normal()生成服从正态分布的随机数,tf.zeros则生成全0数组。