Deep learning with PyTorch: A 60 minute blitz _note(1) Tensors
第一章
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、扩展阅读
- 本章的两个MNIST 程序实际上来自于TensorFlow 官方的两个新手教程,地址为https://www.tensorflow.org/get_started/mnist/beginners 和 https://www.tensorflow.org/get_started/mnist/pros 。读者可以将本书的内容和官方的教程对照起来进行阅读。这两个新手教程的中文版地址为http://www.tensorfly.cn/tfdoc/tutorials/mnist_beginners.html 和http://www.tensorfly.cn/tfdoc/tutorials/mnist_pros.html。
- 本章简要介绍了TensorFlow 的tf.Tensor 类。tf.Tensor 类是TensorFlow的核心类,常用的占位符(tf.placeholder)、变量(tf.Variable)都可以看作特殊的Tensor。读者可以参阅https://www.tensorflow.org/programmers_guide/tensors 来更深入地学习它的原理。
- 常用tf.Variable 类来存储模型的参数, 读者可以参阅https://www.tensorflow.org/programmers_guide/variables 详细了解它的运行机制, 文档的中文版地址为http://www.tensorfly.cn/tfdoc/how_tos/ variables.html。
- 只有通过会话(Session)才能计算出tf.Tensor 的值。强烈建议读者 在学习完tf.Tensor 和tf.Variable 后,阅读https://www.tensorflow.org/programmers_guide/graphs 中的内容,该文档描述了TensorFlow 中 计算图和会话的基本运行原理,对理解TensorFlow 的底层原理有很 大帮助。
第二章
tensorflow的数据读取原理
画出思维导图

Deep learning with PyTorch: A 60 minute blitz _note(1) Tensors的更多相关文章
- DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ | TENSORS
Tensor是一种特殊的数据结构,非常类似于数组和矩阵.在PyTorch中,我们使用tensor编码模型的输入和输出,以及模型的参数. Tensor类似于Numpy的数组,除了tensor可以在GPU ...
- DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ | TORCH.AUTOGRAD
torch.autograd 是PyTorch的自动微分引擎,用以推动神经网络训练.在本节,你将会对autograd如何帮助神经网络训练的概念有所理解. 背景 神经网络(NNs)是在输入数据上执行的嵌 ...
- DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ | NEURAL NETWORKS
神经网络可以使用 torch.nn包构建. 现在你已经对autograd有所了解,nn依赖 autograd 定义模型并对其求微分.nn.Module 包括层,和一个返回 output 的方法 - f ...
- DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ | TRAINING A CLASSIFIER
你已经知道怎样定义神经网络,计算损失和更新网络权重.现在你可能会想, 那么,数据呢? 通常,当你需要解决有关图像.文本或音频数据的问题,你可以使用python标准库加载数据并转换为numpy arra ...
- Summary on deep learning framework --- PyTorch
Summary on deep learning framework --- PyTorch Updated on 2018-07-22 21:25:42 import osos.environ[ ...
- Neural Network Programming - Deep Learning with PyTorch with deeplizard.
PyTorch Prerequisites - Syllabus for Neural Network Programming Series PyTorch先决条件 - 神经网络编程系列教学大纲 每个 ...
- Neural Network Programming - Deep Learning with PyTorch - YouTube
百度云链接: 链接:https://pan.baidu.com/s/1xU-CxXGCvV6o5Sksryj3fA 提取码:gawn
- (zhuan) Where can I start with Deep Learning?
Where can I start with Deep Learning? By Rotek Song, Deep Reinforcement Learning/Robotics/Computer V ...
- rlpyt(Deep Reinforcement Learning in PyTorch)
rlpyt: A Research Code Base for Deep Reinforcement Learning in PyTorch Github:https://github.com/ast ...
随机推荐
- JS中如何操作数组
背景:随笔中所应用到的代码来自于上一篇随笔,MVC&JQuery如何根据List动态生成表格,部分代码不再重复. 代码如下: $("#btnTan").click(func ...
- [POJ 1001] Exponentiation C++解题报告 JAVA解题报告
Exponentiation Time Limit: 500MS Memory Limit: 10000K Total Submissions: 126980 Accepted: 30 ...
- 如何打造一个"逼格"的web前端项目
最近利用空余的时间(坐公交车看教程视频),重新了解了前后端分离,前端工程化等概念学习,思考如何打造一个“逼格”的web前端项目. 前端准备篇 前端代码规范:制定前端开发代码规范文档. PS:重中之中, ...
- day04_03 题目判断三个数字中的最大值
num1 = input("Num1:") num2 = input("Num2:") num3 = input("Num3:") 输出三个 ...
- SDOJ 3740 Graph
8.9 t3 [描述] 给你一个图,一共有 N 个点,2*N-2 条有向边. 边目录按两部分给出 1. 开始的 n-1 条边描述了一颗以 1 号点为根的生成树,即每个点都可以由 1 号点 到达. 2. ...
- Leetcode 474.一和零
一和零 在计算机界中,我们总是追求用有限的资源获取最大的收益. 现在,假设你分别支配着 m 个 0 和 n 个 1.另外,还有一个仅包含 0 和 1 字符串的数组. 你的任务是使用给定的 m 个 0 ...
- C++ Programming with TDD之二:CppUTest单元测试
在之前一篇C++ Programming with TDD博客中,我带给大家gmock框架的简介(地址戳着里),今天我们继续本系列,带个大家C++中的单元测试框架CppUTest的介绍. CppUTe ...
- 【Luogu】P2155沙拉公主的困惑(数论)
题目链接 数论果然是硬伤qwq 还是智商上的硬伤 我们来讲两个道理 No.1 求1~i!中与i!互质的数的个数 实际上就是求i!的欧拉函数 有如下递推式: f[1]=1 if(i为合数) f[i]=f ...
- ELK安装文档
ELK安装文档: http://cuidehua.blog.51cto.com/5449828/1769525 如何将客户端日志通过ogstash-forwarder发送给服务端的logstash h ...
- Java-动态规划-最多苹果数量的方法
平面上有N*M个格子,每个格子中放着一定数量的苹果.你从左上角的格子开始,每一步只能向下走或是向右走,每次走到一个格子上就把格子里的苹果收集起来,这样下去,你最多能收集到多少个苹果. 思路: 解这个问 ...