在上一节我们简单说了一下简单的模型,有线性回归,Logistic模型以及KNN。
这次我们来说一下tensorflow的神经网络模型
无论是构建线性回归这种简单模型还是神经网络,步骤都是差不多的,inference,loss,training这大概的三个步骤。
下面这个例子仅仅是使用了激活函数,没有用到具体的神经网络
import tensorflow as tf
# 第一层的特征数
n_hidden1=256
# 第二层的特征数
n_hidden2=256
# 输入维度
n_input=784
# 输入占位符
x=tf.placeholder('float32',[None,n_input])
# 编码
def encoder(x):
# 参数 tf,random_normal生成正太分布,第一个参数是shape
weight1=tf.Variable(tf.random_normal([n_input,n_hidden1]))
biases1=tf.Variable(tf.random_normal([n_hidden1]))
weight2=tf.Variable(tf.random_normal([n_hidden1,n_hidden2]))
biases2=tf.Variable(tf.random_normal([n_hidden2]))
# 第一层,sigmoid是激活函数,神经元的非线性作用函数。输出范围是[0-1],可以作为概率
layer_1=tf.nn.sigmoid(tf.add(tf.matmul(x,weight1),biases1))
# 第二层
layer_2=tf.nn.sigmoid(tf.add(tf.matmul(x,weight2),biases2))
return layer_2
# 解码
def decoder(x):
# 参数
weight1=tf.Variable(tf.random_normal([n_hidden2,n_hidden1]))
biases1=tf.Variable(tf.random_normal([n_hidden1]))
weight2=tf.Variable(tf.random_normal([n_hidden1,n_input]))
biases2=tf.Variable(tf.random_normal([n_input]))
#同理
layer_1=tf.nn.sigmoid(tf.add(tf.matmul(x,weight1),biases1))
layer_2=tf.nn.sigmoid(tf.add(tf.matmul(x,weight2),biases2))
return layer_2
# 编码
encoder_op=encoder(x)
# 解码
decoder_op=decoder(encoder_op)
# 编码后解码的数据
y_pred=decoder_op
# 真实的数据
y_true=x
# 拟合模型时的参数
learning_rate=0.01
batch_size=50
training_epochs=1000
# 损失值
cost=tf.reduce_mean(tf.pow(y_true-y_pred,2))
# 优化器,RMSProp优化算法优化
optimizer=tf.train.RMSPropOptimizer(learning_rate).minimize(cost)
init=tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(i