TensorFlow计算模型——计算图的概念

# _*:utf-8_*_

作为 tf

# Numpy 是一个科学计算的工具包,这里通过 Numpy 工具包生成一个模拟数据集

来自 numpy。

#定义训练数据batch的大小

=8

#定义神经网络的参数

w1 = tf.(tf.([2, 3], =1, seed=1))

w2 = tf.(tf.([3, 1], =1, seed=1))

#在一维形状上使用None可以方便地表示使用小批量,

#训练时需要将数据分成更小的batch,测试时可以一次性使用所有数据

#但是,如果数据集比较大,将大量数据放入一个batch可能会导致内存溢出。

x = tf.(tf., shape=(None, 2), name=’x-input’)

y_ = tf.(tf., shape=(None, 1), name=’y-input’)

图片[1]-TensorFlow计算模型——计算图的概念-唐朝资源网

#定义神经网络前向传播的过程

a = tf.(x, w1)

y = tf.(a, w2)

#定义一个损失函数来表征预测值与真实值的差异

= -tf.(

y_ * tf.log(tf.(y, 1e-10, 1.0))

)

#定义学习率

= 0.001

# 定义反向传播算法以优化神经网络中的采用次数

= tf.train.().()

#从随机数生成模拟数据集

rdm = (1)

= 128

图片[2]-TensorFlow计算模型——计算图的概念-唐朝资源网

X = rdm.rand(, 2)

#定义规则给样本打标签,这里都是x1+x2

#等都是负样本(比如不合格的部分),在中的表示方式不一样

# 这里我们用0代表负样本,1代表正样本。大多数解决分类问题的神经网络都会使用 0 和 1 表示方法

Y = [[int(x1 + x2 < 1)] for (x1, x2) in X]

# 创建一个会话来运行

使用 tf.() 作为 sess:

= tf.()

#初始化变量

sess.run()

打印(sess.run(w1))

打印(sess.run(w2))

”’

训练前神经网络参数的值

图片[3]-TensorFlow计算模型——计算图的概念-唐朝资源网

w1 = [[-0. 1. 0.]

[-2. 0. 0. ]]

w2 = [[-0. ]

[ 1. ]

[0.]]

”’

#设置训练轮数

步数 = 5000

对于范围内的 i(步骤):

# 一次选择样本进行训练

开始 = (i * ) %

end = min(start + , )

# 用选定的样本训练神经网络并更新参数

sess.run(,

图片[4]-TensorFlow计算模型——计算图的概念-唐朝资源网

={x: X[start:end], y_: Y[start: end]})

如果我 % 1000 == 0:

# 每隔一段时间计算所有数据的交叉熵并输出

= sess.run(,

={x: X, y_: Y})

print(“经过 %d 步后,所有数据为 %g” % (i, ))

”’

输出结果:

0 步后,所有数据为 0.

1000 步后,所有数据为 0.

在 2000 步之后,所有数据都是 0.

3000 步后,所有数据为 0.

在 4000 步之后,所有数据都是 0.

通过这个结果可以发现,随着训练的进行,交叉熵逐渐减小

图片[5]-TensorFlow计算模型——计算图的概念-唐朝资源网

交叉熵越小,预测结果与真实结果的差距越小

”’

打印(sess.run(w1))

打印(sess.run(w2))

”’

训练后的神经网络参数值

w1 = [[-1. 2. 1.]

[-3. 1. 2.11789 ]]

w2 = [[-1. ]

[2.]

[ 1. ]]

对比神经网络参数从一开始到开始的值,我们发现这两个参数的值发生了变化

这种变化是训练的结果,它可以让神经网络更好地拟合提供的训练数据集

”’

© 版权声明
THE END
喜欢就支持一下吧
点赞15赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容