[Tensorflow系列-3]:Tensorflow基础 - Hello World程序与张量(Tensor)概述

Posted 文火冰糖的硅基工坊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Tensorflow系列-3]:Tensorflow基础 - Hello World程序与张量(Tensor)概述相关的知识,希望对你有一定的参考价值。

 作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119580837


目录

1. 导入库及检查版本

2. Hello World

3. 基本数据单元

3.1 Tensorflow支持的数据结构

3.2 数据的类型:dtype=tf.xxx

3.3 数据内容: [[xx,xx], [xx,xx]]

3.4 数据运算的设备:device="xxx"

4. Tensor实例/样本创建概述

5. Tensor的成员

5.1 Tensor的公共属性

5.2 Tensor的公共操作

5.3 Tenosor的运算方法



1. 导入库及检查版本

import numpy as np
import tensorflow as tf

2. Hello World

print("Hello world")
print("tensorflow version:", tf.__version__)

3. 基本数据单元

3.1 Tensorflow支持的数据结构

(1)张量:tensor  (Torch定义了专门的结构)

从Python的List [ ]的数据结构 =》 Numpy.Array =》 Tensorflow的Tensor

  • Python list

数据元素可以是任意类型,数据元素的数据类型可以不相同。

  • Numpy.Array

Numpy数组元素的数据类型是相同的,且必须是数值类型,且通常是2维的,且支持在CPU上运行。

  • Tensorflow Tensor:

与Numpy.array一样,Tensor中的元素的数据类型是必须相同的,与Numpy大体相同。

Tensor在Numpy.array的基础上,进行了增强:

Tensor中的数据元素可以是任意维度的

Tensor可以支持在GPU上执行

支持自动求导等于深度学习相干的操作。

(2)变量:variable

Python的变量variable =》 深度学习框架的variable

深度学习框架定义了自己专有的variable变量,与Python的变量的区别是 深度学的variable用于存放升级网络的w和b的参数,是可以自动求导数的。

(3)神经网络:nn  (深度学习定义了专门用于神经网络的数据结构)

3.2 数据的类型:dtype=tf.xxx

3.3 数据内容: [[xx,xx], [xx,xx]]

数据的内容,以多维数组的形式[[xx,xx], [xx,xx]]提供给Tensor。

3.4 数据运算的设备:device="xxx"

4. Tensor实例/样本创建概述

与PyTroch不同的是,Tensorflow使用的不是Tensor类模板来创建张量,也没有使用专有的名字“tensor”,而是使用了constant这个专有名词。constant实际上是一个函数名,而不是类模板的名字。

5. Tensor的成员

5.1 Tensor的公共属性

  • xxx.dtype:Tensor数据类型, int、float、?
  • xxx.device:执行的处理器,CPU or GPU
  • xxx.layout:内存布局,稀疏压缩存储和稠密非压缩存储。
  • xxx.shape:张量的形状(维度)

(1)属性的读

#代码示例

#直接构建Tensor内容和维度,内容数据是确定的
a = tf.constant([[1,2],[3,4]]) 
print(a)

print("\\n读取tensor的属性")
print(a.device)
# print(a.layout)  #不支持
print(a.dtype)
# print(a.type)   #不支持
# print(a.type()) #不支持
# print(a.size)   #不支持
print(a.shape)
#输出结果

tf.Tensor(
[[1 2]
 [3 4]], shape=(2, 2), dtype=int32)

读取tensor的属性
/job:localhost/replica:0/task:0/device:CPU:0
<dtype: 'int32'>
(2, 2)

(2)属性的配

  • 通过tensor函数进行配置
print("设置数据类型属性")
a = tf.constant([1,2,3], dtype=tf.float32)
print(a)
print (a.dtype)

输出:

设置数据类型属性
tf.Tensor([1. 2. 3.], shape=(3,), dtype=float32)
<dtype: 'float32'>

print("\\n设置tensor的device属性:")
a.cpu()  #设置device为CPU
print(a)
print(a.device)

输出: 

设置tensor的device属性:
tf.Tensor([1. 2. 3.], shape=(3,), dtype=float32)
/job:localhost/replica:0/task:0/device:CPU:0
print("\\n设置tensor的device属性:")
a.gpu()  #设置device为GPU
print(a)
print(a.device)
tf.Tensor(
[[1 2]
 [3 4]], shape=(2, 2), dtype=int32)
/job:localhost/replica:0/task:0/device:CPU:0

设置tensor的device属性:

.......

RuntimeError: GPU:0 unknown device.

备注:

由于没有安装GPU的环境,因此设置gpu device失败。

5.2 Tensor的公共操作

  • type(): 如上图  
  • size(): 如上图

5.3 Tenosor的运算方法

(1)使用重载后的Python运算符:+、-

(2)使用Torch提供的通用方法:tf.add、tf.sub......

(3)使用Tensor实例自带的成员函数xxx.add()、xxx.sub => 不修改tensor实例的值  # 不支持

(4)使用Tensor实例自带“in place”运算: xxx_add()、xxx.sub_=> 直接修改tensor实例的值

也就是说,要完成Tensor的某种运算,有很多种方法和手段。

但tensorflow而言,比Pytorch的运算方法要少,后两者方法在tensorflow中是不支持的。

# 代码示例:

a = tf.constant([1,2,3,4]) 
print(a)
b = tf.constant([5,6,7,8]) 
print(b)

print("\\n运算符法:")
c = a + b
print(c)

print("\\n全局函数法:")
c = tf.add(a,b)
print(c)

print("\\n成员函数法:")
# c = a.add(b)  # 不支持
#  print(c)
输出:

tf.Tensor([1 2 3 4], shape=(4,), dtype=int32)
tf.Tensor([5 6 7 8], shape=(4,), dtype=int32)

运算符法:
tf.Tensor([ 6  8 10 12], shape=(4,), dtype=int32)

全局函数法:
tf.Tensor([ 6  8 10 12], shape=(4,), dtype=int32)

成员函数法:

# tensorflow不支持


作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119580837

以上是关于[Tensorflow系列-3]:Tensorflow基础 - Hello World程序与张量(Tensor)概述的主要内容,如果未能解决你的问题,请参考以下文章

Tensorflow-1.x源码编译及C++API调用

tensorflow 有错误

02.Tensorflow基础用法

使用 tensorflow 我遇到了这样的错误

因tensorflow版本问题造成的error

TensorFlow Android Camera Demo - 灰度图像分类