计算机视觉之tensorflow最小基础

Tensorflow概念

tensor:张量
flow:流

张量概念是矢量概念的推广,矢量是一阶张量。数学中:张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数。在编程语言中它就是一种数据类型,tensor类。tensor对象的意义可以是数字字符串矩阵等等,tensorflow是基于会话的。
张量的操作在会话session中运行。

tensorflow望文生义就是将张量以流的形式对其加工,就像工厂一样,加工需要很多工序我们拿一道工序来说:加工需要的原料(张量或准张量)对材料的处理逻辑(各种函数,语句)加工设施(session会话)最后诞生你想要的产品(处理结果),注意的是:其中加工需要的原料可能是上道工序的处理结果,此工序的产品有可能是充当下道工序的原料,我们为了区分最原始的原料(准张量)和之后工序的原料(张量),用中间产品和原料两个词加以分开。区分后我们往下阐述。

接着上边区分,原料需要把控分类,我们将准张量分为 变量 常量 占位符,我喜欢把他们当做入料口的接收类型,他们各自有自己类型的入料口,tensorflow.constant(),tensorflow.Variable(),tensorflow.placeholder就是入料一个常量、变量、待定变量,出料相应张量的函数/方法,这步预处理的工序叫做张量化,它在某些意义上不算tensorflow,之后张量出现并将进入接下来的工序,接下来的才是对张量的操作,才应该是正式工序的开始,才叫做tensorflow,比如最简单的tensorflow.add(),tensorflow.multiply()。

变量:variable–可以改变的量
常量:constant–固定不变的量
占位符:placeholder–定义时类型确定但值待定的常量

tensorflow2.0版本以前和2.0及之后的不同:变量的运行需要的初始化操作改了API ,以下纯属tensorflow1.7版本

常见意义的张量化工序及其运行

import tensorflow as tf
c1=tf.constant(2)#转常量2为张量型常量的逻辑工序
sess=tf.Session()
str1=sess.run(c1)#工序运行,产出张量2
import tensorflow as tf
 v1=tf.Variable(2)#转变量2为张量型变量的逻辑工序
sess=tf.Session()
init=tf.global_variables_initializer()#有变量意义的张量需要的额外初始化逻辑工序
sess.run(init)
str1=sess.run(v1)#工序运行,产出张量2
import tensorflow as tf
c1=tf.placeholder(tf.float32)
c2=tf.placeholder(tf.float32)
c3=tf.add(c1,c2)
print(c1,c2,c3)
with tf.Session() as sess:
    print(sess.run(c3,feed_dict={c1:1,c2:5}))
print('end')
import tensorflow as tf
n1=tf.constant([
    [1,2],
    [3,4],
    [5,6],
    [7,8],
])
print('n1的行数和列数:',n1.shape)
sess=tf.Session()
print('n1:\n',sess.run(n1))
print('n1[0]:\n',sess.run(n1[0]))
print('n1[3][1]',sess.run(n1[0][0]))

Tensorflow各意义的张量简单计算

import tensorflow as tf
c1=tf.constant(2)
v2=tf.Variable(3)
print('v1',c1,'v2',v2)
c3=tf.add(c1,v2)
cassign=tf.assign(v2,c3)#使c3的出料流指向v2的入料口,v2是准张量3的张量化出料,又是add工序的入料之一
c4=tf.multiply(c1,v2)
c5=tf.divide(c1,v2)
c6=tf.subtract(c1,v2)
sess=tf.Session()#获取一个session
str1=sess.run(c1)#常张量运行


init=tf.global_variables_initializer()#变张量运行前需要先执行一下初始化操作
sess.run(init)

str2=sess.run(v2)

print(str1,str2)
print(sess.run(c3))
print(sess.run(c4))
print(sess.run(c5))
print(sess.run(c6))

#assign()函数需要注意一下
print(sess.run(cassign))
print(sess.run(cassign))
print(sess.run(cassign))
with sess.as_default():#sess充当默认session
    print(cassign.eval())#某工序在默认session下运行,可以调用的函数


某些特殊矩阵意义的张量化及其运算

import tensorflow as tf


mat1=tf.constant([
    [1,1,1]
    ,[1,1,1]
    ,[1,1,1]
])
mat2=tf.ones([3,3])
mat3=tf.zeros([3,3])
mat4=tf.fill([2,3],20)#元素统一型矩阵
mat5=tf.zeros_like(mat4)
mat6=tf.lin_space(1.0,2.0,5)#向量
mat7=tf.random_uniform([2,3],-1,3)
with tf.Session().as_default():
    print("---------------------------------")
    print(mat1.eval())
    print("---------------------------------")
    print(mat2.eval())
    print("---------------------------------")
    print(mat4.eval())
    print("---------------------------------")
    print(mat5.eval())
    print("---------------------------------")
    print(mat6.eval())
    print("---------------------------------")
    print(mat7.eval())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值