您的位置:首页 > 理论基础 > 计算机网络

基于tensorflow的神经网络简单实例

2018-01-12 11:48 543 查看

基于tensorflow的神经网络简单实例

* 发布世家:2018年01月12日11:44:49 更新时间:2018年01月12日11:44:54*

内容摘要:

通过构建一个简单的拟合直线的神经网络来简单的讲解基于tensorflow框架的神经网络构建方法。

讲解简单的使用tensorboard 来展示、分析神经网络流图的方法。

# coding:utf-8

# 调用tensorflow
import tensorflow as tf
import numpy as np
LOG_PATH = "/home/lucky/mylog.log"


# 这里生成了100对数字,作为整个神经网络的input
x_data = np.random.rand(100).astype("float32")


# 使用with,让我们的数据以节点的方式落在tensorflow的报告上。
with tf.name_scope('y_data'):
y_data = x_data * 2.5 + 0.8 #权重2.5,偏移设置2.5
tf.summary.histogram("method_demo"+"/y_data",y_data) #可视化观看变量y_data


<tf.Tensor 'y_data/method_demo/y_data:0' shape=() dtype=string>


# 指定W和b变量的取值范围,随机在[-200,200]
with tf.name_scope('W'):
W = tf.Variable(tf.random_uniform([1], -200.0, 200.0))
tf.summary.histogram("method_demo"+"/W",W) #可视化观看变量


<tf.Tensor 'W/method_demo/W:0' shape=() dtype=string>


# 指定偏移值b,同时shape等于1
with tf.name_scope('b'):
b = tf.Variable(tf.zeros([1]))
tf.summary.histogram("method_demo"+"/b",b) #可视化观看变量


<tf.Tensor 'b/method_demo/b:0' shape=() dtype=string>


with tf.name_scope('y'):
y = W * x_data + b #sigmoid神经元
tf.summary.histogram("method_demo"+"/y",y) #可视化观看变量


<tf.Tensor 'y/method_demo/y:0' shape=() dtype=string>


# 最小化均方
with tf.name_scope('loss'):
loss = tf.reduce_mean(tf.square(y - y_data))
tf.summary.histogram("method_demo"+"/loss",loss) #可视化观看变量
tf.summary.scalar("method_demo"+'loss',loss) #可视化观看常量


<tf.Tensor 'loss/method_demo/loss:0' shape=() dtype=string>

<tf.Tensor 'loss/method_demoloss:0' shape=() dtype=string>


# 定义学习率,我们先使用0.7来看看效果
optimizer = tf.train.GradientDescentOptimizer(0.7)
with tf.name_scope('train'):
train = optimizer.minimize(loss)


# 初始化TensorFlow参数
init = tf.global_variables_initializer()


# 运行数据流图
sess = tf.Session()
#合并到Summary中
merged = tf.summary.merge_all()
#选定可视化存储目录
writer =tf.summary.FileWriter(LOG_PATH,sess.graph)
sess.run(init)


# 开始计算
for step in range(500):
sess.run(train)
if step % 20 == 0:
print(step, "W:",sess.run(W),"b:", sess.run(b))
result = sess.run(merged) #merged也是需要run的
writer.add_summary(result,step) #result是summary类型的


0 W: [ 3.31470919] b: [ 0.79210788]
20 W: [ 2.60540962] b: [ 0.74690092]
40 W: [ 2.51701379] b: [ 0.79122424]
60 W: [ 2.50275946] b: [ 0.798576]
80 W: [ 2.50044751] b: [ 0.79976904]
100 W: [ 2.50007224] b: [ 0.7999627]
120 W: [ 2.50001168] b: [ 0.79999393]
140 W: [ 2.50000167] b: [ 0.79999912]
160 W: [ 2.50000072] b: [ 0.79999965]
180 W: [ 2.50000072] b: [ 0.79999965]
200 W: [ 2.50000072] b: [ 0.79999965]
220 W: [ 2.50000072] b: [ 0.79999965]
240 W: [ 2.50000072] b: [ 0.79999965]
260 W: [ 2.50000072] b: [ 0.79999965]
280 W: [ 2.50000072] b: [ 0.79999965]
300 W: [ 2.50000072] b: [ 0.79999965]
320 W: [ 2.50000072] b: [ 0.79999965]
340 W: [ 2.50000072] b: [ 0.79999965]
360 W: [ 2.50000072] b: [ 0.79999965]
380 W: [ 2.50000072] b: [ 0.79999965]
400 W: [ 2.50000072] b: [ 0.79999965]
420 W: [ 2.50000072] b: [ 0.79999965]
440 W: [ 2.50000072] b: [ 0.79999965]
460 W: [ 2.50000072] b: [ 0.79999965]
480 W: [ 2.50000072] b: [ 0.79999965]


#在终端中打开下面一句话
#tensorboard --logdir /home/lucky/mylog.log


tensorboard 的使用

在op上增加可视化变量声明:tf.summary.histogram(“method_demo”+”/y_data”,y_data)

在op上增加可视化常量声明:tf.summary.scalar(“method_demo”+’loss’,loss)

合并到Summary中:merged = tf.summary.merge_all()

选定可视化存储目录:writer =tf.summary.FileWriter(LOG_PATH,sess.graph)其中路径声明:LOG_PATH = “{the_log_dir_path}”例如:“/home/lucky/mylog.log”,当运行sess.run的时候,sess.graph就会写入log_path当中。

在每步训练的时候写入当时的数据信息:result = sess.run(merged) #merged也是需要run的;

writer.add_summary(result,step) #result是summary类型的

在终端当中运行:tensorboard –logdir {the_log_dir_path},然后打开提供的链接就行啦!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: