第一章

1、什么是占位符和变量?

无论是占位符还是变量,都是tensor,tensor是tensorflow计算的节点。

占位符和变量是不同类型的tensor。占位符的值由用户自行传递,不依赖于其他tensor,通常用来存储样本数据和标签。

tf.Tensor类是核心类,占位符(tf.placeholder)和变量(tf.Variable)都可以看作特殊的tensor。

可以参阅http://www.tensorfly.cn/tfdoc/how_tos/variables.html

2、什么是会话?变量和占位符在会话中如何传递?

会话是一个核心概念,tensor是图计算的节点,会话是对这些节点进行计算的上下文。

变量是计算过程中可以改变的值的tensor,变量的值会被保存下来。在对变量进行操作前必须进行变量初始化,即在会话中保存变量的初始值。

训练时,每次提取一部分数据进行训练,把他们放入对应的占位符中,在会话中,不需要计算占位符的值,而是直接把占位符的值传递给会话。

会话中,变量的值会被保存下来,占位符的值不会被保存,每次可以给占位符传递不同的值。

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
# x是一个占位符,表示待识别的图片
# 形状是[None, 784],None表示这一维的大小可以是任意的
x = tf.placeholder(tf.float32, [None, 784])
# 变量参数用tf.Variable
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10])) y = tf.nn.softmax(tf.matmul(x, W) + b)
# y_是一个占位符,表示实际的图像标签,独热表示
y_ = tf.placeholder(tf.float32, [None, 10]) # 交叉熵
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y)))
# 梯度下降,学习率是0.01
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy) # 创建session,只有在session中才能运行优化步骤train_step
sess = tf.InteractiveSession()
# 运行之前必须要初始化所有变量,分配内存
tf.global_variables_initializer().run()
print('start training...') for _ in range(1000):
# batch_xs: (100, 784), batch_ys: (100, 10)
batch_xs, batch_ys = mnist.train.next_batch(100)
# sess中运行train_step,运行时要使用feed_dict传入对应占位符的值
sess.run(train_step, feed_dict={x: batch_xs, y_:batch_ys})

3、计算图流程(画出思维导图

# 独热表示的y_ 需要通过sess.run(y_)才能获取此tensor的值
print(tf.argmax(y, 1))
# output: Tensor("ArgMax:0", shape=(?,), dtype=int64)
print(tf.argmax(y_, 1))
# output: Tensor("ArgMax_1:0", shape=(?,), dtype=int64) # tf.equal 比较是否相等,输出true和false
# tf.argmax(y,1), tf.argmax(y_,1), 取出数组中最大值的下标,可以用独热表示以及模型输出转换为数字标签
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
# tf.cast 将比较值转换为float32型的变量,true转换为1,false转换为0
# tf.reduce_mean 计算数组中的所有元素的平均值,得到模型的预测准确率
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
# 使用全体测试样本预测,mnist.test.images, mnist.test.labels
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels})) # 只有输入了x,y_,通过sess.run才可以计算出correct_prediction,accuracy

4、扩展阅读

第二章

tensorflow的数据读取原理

画出思维导图

Deep learning with PyTorch: A 60 minute blitz _note(1) Tensors的更多相关文章

  1. DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ | TENSORS

    Tensor是一种特殊的数据结构,非常类似于数组和矩阵.在PyTorch中,我们使用tensor编码模型的输入和输出,以及模型的参数. Tensor类似于Numpy的数组,除了tensor可以在GPU ...

  2. DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ | TORCH.AUTOGRAD

    torch.autograd 是PyTorch的自动微分引擎,用以推动神经网络训练.在本节,你将会对autograd如何帮助神经网络训练的概念有所理解. 背景 神经网络(NNs)是在输入数据上执行的嵌 ...

  3. DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ | NEURAL NETWORKS

    神经网络可以使用 torch.nn包构建. 现在你已经对autograd有所了解,nn依赖 autograd 定义模型并对其求微分.nn.Module 包括层,和一个返回 output 的方法 - f ...

  4. DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ | TRAINING A CLASSIFIER

    你已经知道怎样定义神经网络,计算损失和更新网络权重.现在你可能会想, 那么,数据呢? 通常,当你需要解决有关图像.文本或音频数据的问题,你可以使用python标准库加载数据并转换为numpy arra ...

  5. Summary on deep learning framework --- PyTorch

    Summary on deep learning framework --- PyTorch  Updated on 2018-07-22 21:25:42  import osos.environ[ ...

  6. Neural Network Programming - Deep Learning with PyTorch with deeplizard.

    PyTorch Prerequisites - Syllabus for Neural Network Programming Series PyTorch先决条件 - 神经网络编程系列教学大纲 每个 ...

  7. Neural Network Programming - Deep Learning with PyTorch - YouTube

    百度云链接: 链接:https://pan.baidu.com/s/1xU-CxXGCvV6o5Sksryj3fA 提取码:gawn

  8. (zhuan) Where can I start with Deep Learning?

    Where can I start with Deep Learning? By Rotek Song, Deep Reinforcement Learning/Robotics/Computer V ...

  9. rlpyt(Deep Reinforcement Learning in PyTorch)

    rlpyt: A Research Code Base for Deep Reinforcement Learning in PyTorch Github:https://github.com/ast ...

随机推荐

  1. 命令行执行Qt程序

    原文网址 //helloworld.cpp #include <QApplication> #include <QPushButton> int main(int argc,c ...

  2. POJ 1791 Parallelogram Counting(求平行四边形数量)

    Description There are n distinct points in the plane, given by their integer coordinates. Find the n ...

  3. zookeeper安装、配置、使用

    [安装] wget http://www.apache.org/dist/zookeeper/zookeeper-3.3.6/zookeeper-3.3.6.tar.gz tar zxvf zooke ...

  4. Python 基础(一)

    本章内容 1.编译和解释型语言的区别 2.Python的解释器 3.pyc文件 4.运行环境 5.变量 6.数据类型 7.字符编码 8.三元运算 编译和解释型语言的区别 编译器是把源程序的每一条语句都 ...

  5. custom post types 404 Page Error

    问题: 注册新的文章类型后,用新的类型写文章,打开后报 404 错误 原因: 因为虽然注册了新的帖子类型,但WordPress还不知道如何处理它 解决: 到设置 -> 固定链接,重新点击保存,再 ...

  6. [python学习篇][廖雪峰][4]函数--reduce

    reduce的用法.reduce把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是: reduce(f, ...

  7. ZOJ-3953 Intervals,t

    Intervals 题意:给出n个区间,求最少删除多少个区间使得任意三个区间都不相交. 思路:按区间左端点排序,每次选取r最大的两个与当前比较,如果能放更新r,否则删除r最大的.关键就在怎么删除r最大 ...

  8. Welcome-to-Swift-19类型嵌套(Nested Types)

    枚举类型常被用于实现特定类或结构体的功能.也能够在有多种变量类型的环境中,方便地定义通用类或结构体来使用,为了实现这种功能,Swift允许你定义类型嵌套,可以在枚举类型.类和结构体中定义支持嵌套的类型 ...

  9. NYOJ——301递推求值(矩阵快速幂)

    递推求值 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 给你一个递推公式: f(x)=a*f(x-2)+b*f(x-1)+c 并给你f(1),f(2)的值,请求出f(n)的 ...

  10. bzoj 4804 欧拉心算 欧拉函数,莫比乌斯

    欧拉心算 Time Limit: 15 Sec  Memory Limit: 256 MBSubmit: 408  Solved: 244[Submit][Status][Discuss] Descr ...