Tensorflow 学习心得(一)

基本使用

tensorflow以数据流图为表达形式,每一个节点会获得0个或多个Tensor(数据)在这里插入图片描述

import tensorflow as tf
'''
"/cpu:0": 机器的 CPU.
"/gpu:0": 机器的第一个 GPU, 如果有的话.
"/gpu:1": 机器的第二个 GPU, 以此类推.
'''
tf.device("/cpu:0")
#创建一个节点matri1
matri1 = tf.constant([[3.,3.]]) #定义常量矩阵1*2
#创建一个节点matri2
matri2 = tf.constant([[2.],[2.]])#定义常量矩阵2*2
#创建矩阵乘法
prduct = tf.matmul(matri1,matri2)
#这里存在三个节点
#在一个会话中启动图
sess = tf.Session()
# 调用 sess 的 'run()' 方法来执行矩阵乘法 op, 传入 'product' 作为该方法的参数.
# 上面提到, 'product' 代表了矩阵乘法 op 的输出, 传入它是向方法表明, 我们希望取回
# 矩阵乘法 op 的输出.
# 整个执行过程是自动化的, 会话负责传递 op 所需的全部输入. op 通常是并发执行的.
# 函数调用 'run(product)' 触发了图中三个 op (两个常量 op 和一个矩阵乘法 op) 的执行.
# 返回值 'result' 是一个 numpy `ndarray` 对象.
result = sess.run(prduct)
print(result)
#任务完成,结束会话。
# sess.clase()
'''
可以使用with完成代码块激活
'''
with tf.Session() as sess: 
    result = sess.run(prduct)
    print(result)

tensroflow实现MNIST
TensorFlow是一个非常强大的用来做大规模数值计算的库。其所擅长的任务之一就是实现以及训练深度神经网络。
python:列表【】(# 列表(打了激素的数组): 可以存储任意数据类型的集和。)
元组()(一旦定义了数值就没有办法修改!)
利于机器学习实现手写字体代码。

import tensorflow.examples.tutorials.mnist.input_data as input_data
mnist = input_data.read_data_sets("MNIST_data/",one_hot = True)

import tensorflow as tf
'''
x不是一个特定的事,而是一个占位符。float32是tf最常用的数据格式。
定义个列表[]里面是数值是可以变化的量。
我们用2维的浮点数张量来表示这些图,这个张量的形状是[None,784 ]。
(这里的None表示此张量的第一个维度可以是任何长度的。)
'''
x = tf.placeholder(tf.float32,[None,784])
'''
一个Variable代表一个可修改的张量,
对于各种机器学习应用,一般都会有模型参数,可以用Variable表示。
tf.zeros创建一个初始化全为0的数值
w的维度是[784,10],一张图像输入28*28,总共10个分类,就会有{784*photo*10]个权重参数
B的维度是[10],每一个类别都会有1个偏置。
'''
W = tf.Variable(tf.zeros([784,10]))
B = tf.Variable(tf.zeros([10]))
'''
首先,我们用tf.matmul(​​X,W)表示x乘以W,对应之前等式里面的,这里x是一个2维张量拥有多个输入。
然后再加上b,把和输入到tf.nn.softmax函数里面。
经过Softmax之后(0.3,0.05,0.05,0.1,0.1.。。。。。。)10个数值
'''
y = tf.nn.softmax(tf.matmul(x,W)+B)
'''
训练模型:
定义指标来评估模型的好坏,指标一般是loss(损失)。最常见的函数是”交叉熵”cross_entropy
我们需要定义一个新的,正确的占位符来表示正确的输入。
'''
y_ = tf.placeholder(tf.float32,[None,10])
'''
计算交叉熵:
假设有一个三分类问题,某个样例的正确答案是(1,0,0)。
某模型经过softmax回归之后的预测答案是(0.5,0.4,0.1),
那么这个预测和正确答案之间的交叉熵为:正确答案((1,0,0),预测(0.5,0.4,0.1))= -(1*log0.5+0*log0.4+0*log0.1)≈0.3
用 tf.reduce_sum 计算张量的所有元素的总和。
(注意,这里的交叉熵不仅仅用来衡量单一的一对预测和真实值,
而是所有100幅图片的交叉熵的总和。对于100个数据点的预测表现比单一数据点的表现能更好地描述我们的模型的性能。
'''
cross_entropy = -tf.reduce_sum(y_ * tf.log(y)) #得出loss
'''
定义一个optimizer优化器(梯度下降算法),以0.01的学习率最小化交叉熵
'''
Optimizer = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
'''
定义完模型之后,运行之前需要对所有的变量进行初始化的操作。
'''
init = tf.global_variables_initializer() #最新版的定义全局初始化。
'''
在Session里面启动我们的模型
'''
sess = tf.Session()
sess.run(init)
'''
训练模型
mnist.train.next_batch 随机从mnist中抽取100张图片训练,
feed_dict:填充前面占位符的x和y
'''
for i in range(1000):
    batch_xs, batch_ys = mnist.train.next_batch(100)
    sess.run(Optimizer, feed_dict={
   x: batch_xs, y_: batch_ys})
'''
tf.argmax用途:返回最大的那个数值所在的下标(第一个参数是矩阵,第二个参数是0或者1。
0表示的是按列比较返回最大值的索引,1表示按行比较返回最大值的索引)。
tf.equal:判断真实和预测值是否相同。
例如真实值是[0,0,1],预测是[0.6,0.3,0.1],经过argmax之后返回3和1,经过equal判断后结果为False
下面一行代码只会输出True和False。
'''
correct_prrediction = tf.equal(tf.argmax(y,1),tf.argmax(y_,1))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: TensorFlow是一个免费开源的机器学习框架,是一种用于机器学习和深度学习的非常受欢迎的工具。针对TensorFlow的学习资料有很多选择。 首先,官方网站(https://www.tensorflow.org) 提供了丰富的学习资源,包括开发者指南、API文档、教程、示例代码等。官方文档提供了TensorFlow的全面介绍和使用说明,可以帮助学习者快速入门和深入了解框架的使用和原理。 其次,网上有许多优质的博客和教程,涵盖了从入门到高级应用的各个方面。例如,Medium上有很多专门讲解TensorFlow的博客,以及一些专门提供教程的网站,如TensorFlow For You(https://www.tensorflow.wiki),可以帮助初学者逐步学习和理解TensorFlow的概念和应用。 此外,许多优秀的机器学习和深度学习课程也包括了对TensorFlow的讲解和实践。例如,Coursera上的《深度学习专项课程》和Udacity的《深度学习基石》都为学习者提供了一套系统的课程体系,其中包括对TensorFlow的讲解和项目实践。 还有很多开源的、面向实践的TensorFlow项目提供了大量的学习资料和示例代码,例如GitHub上的TensorFlow官方示例代码库(https://github.com/tensorflow/examples)、Awesome-TensorFlow(https://github.com/jtoy/awesome-tensorflow)等。学习者可以通过实际动手操作和参与开源项目来加深对TensorFlow的理解和应用能力。 综上所述,TensorFlow的学习资料非常丰富,主要包括官方文档、博客教程、在线课程和开源项目等。学习者可以根据自己的需求和兴趣选择适合自己的学习资源,通过一步一步的学习和实践提高对TensorFlow的掌握水平。 ### 回答2: TensorFlow是一个由Google开发的开源机器学习框架,广泛应用于深度学习神经网络的构建。它提供了丰富的学习资料,帮助学习者快速上手和深入了解TensorFlow的使用。 首先,TensorFlow官方网站(https://www.tensorflow.org/)提供了详尽的学习资料,包括官方文档、教程、指南和示例代码等。官方文档中介绍了TensorFlow的基本概念、架构和基本操作,对初学者来说是很好的入门资料。教程和指南提供了从简单到复杂的实战案例,教学者如何使用TensorFlow构建模型、训练模型和评估模型的过程。 其次,TensorFlow还有丰富的社区资源,包括官方论坛、Stack Overflow等。在这些社区中,学习者可以提问问题、寻求帮助和分享经验。许多资深的TensorFlow使用者经常在这些社区分享自己的学习心得和解决问题的方法,对学习TensorFlow非常有帮助。 另外,还有很多TensorFlow的书籍和在线课程可供学习。在书籍方面,例如《深度学习框架TensorFlow实践指南》、《TensorFlow实战》等,它们系统地介绍了TensorFlow的基本概念和应用。在线课程方面,如Coursera等平台上有很多关于TensorFlow的课程,可以跟着课程学习并完成相应的实践项目。 总之,通过官方文档、教程和指南、社区资源、书籍和在线课程等丰富的学习资料,学习者可以全面了解TensorFlow的概念和使用,从而快速掌握和应用TensorFlow进行机器学习和深度学习的任务。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值