tensorflow学习文档

下面用几个小例子来学习TensorFlow的用法。

1. 第一个程序:加法

import tensorflow as tf
# 两个常量操作
a = tf.constant(5)
b = tf.constant(8)
# 一个add() 操作
sum = tf.add(a, b)
# 会话
sess = tf.Session()
# 在会话中执行操作
result = sess.run(sum)
print(result)
sess.close()

这里简单演示了用tensorflow进行一个加法运算。

2. 第二个程序:平面拟合

import tensorflow as tf
import numpy as np

x_data = np.float32(np.random.rand(2, 100)) # 随机输入100个二维平面上的点[x1, x2]
y_data = np.dot([0.100, 0.200], x_data) + 0.300 # y = 0.1*x1 + 0.2*x2 + 0.3
# 构造一个线性模型
#
b = tf.Variable(tf.zeros([1]))
W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0))
y = tf.matmul(W, x_data) + b  # y = W*x + b
# 最小化方差
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss) # 使loss降到
# 初始化变量操作
init_op = tf.global_variables_initializer()
# 启动图 (graph)
sess = tf.Session()
sess.run(init_op)
# 拟合平面
for step in range(0, 201):
    sess.run(train)
    if step % 20 == 0:
        print(step, sess.run(W), sess.run(b))

这个程序向展示了如何学习参数。我们先用numpy初始化了100个二维数据点[x1 ,x2], 我们令y_data = 0.1*x1 + 0.2*x2 + 0.3

现在假设我们只知道100个(x1, x2)这样的点和与它们对应的y值y_data,我们想求y_data 与(x1, x2)的关系式。那么我们假设y = w1*x1 + w2*x2 + b = (w1, w2) * (x1, x2) + b, 现在我们给(w1, w2)和b一个初始值,并用次初始值计算y的值,这样计算值y和真实值y_data之间就会有一个误差loss,这个误差loss是一个大于零的数,它是由w1, w2, b引起的。然后我们定义一个优化器optimizer来优化loss,就是不断改变w1, w2, b可以使loss减小。从下图可以看出,随着step的增加,loss在减小,(w1, w2)和b在向(0.1, 0.2)和0.3靠近。


3.  MNIST 手写数字识别例子

(1) 数据集下载:mnist数据集

(2) 训练代码示例1:单层全连接 模型

from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf
import os

# 保存mnist数据的文件路径
MNIST_data_folder = 'D:/mnist/data'
log_dir = 'D:/mnist/logs/fc_10000steps'
mnist = input_data.read_data_sets(MNIST_data_folder, one_hot=True)

# 定义一个“图”
myGraph = tf.Graph()
with myGraph.as_default():
    with tf.name_scope("Img_Label_Input"):
        #占位符,存储训练数据和标签
        x = tf.placeholder("float", shape=[None, 784])
        y_ = tf.placeholder("float", shape=[None, 10])

    with tf.name_scope("Fully_Connected_Layer"):
        W = tf.Variable(tf.zeros([784, 10]))
        b = tf.Variable(tf.zeros([10]))

        logits = tf.matmul(x, W) + b

        # 计算y, 这里y是一个1x10的矩阵,代表为0-9的概率
        y = tf.nn.softmax(logits)

        # 将w和b添加到summary中
        tf.summary.histogram('W', W)
        tf.summary.histogram('b', b)

    with tf.name_scope("Training"):
        # 这里用交叉熵作为损失函数,他可以衡量计算所得的y和真实的标签y_的分布差别
        cross_entropy = -tf.reduce_sum(y_ * tf.log(y))

        # 用优化器降低损失函数
        train_step = tf.train.GradientDescent
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值