以前都自嘲什么码农, 搬砖啥的, 倒不如 "工具人" 这个词更加贴切. 我现在就是一个完完全全的工具人. 上班真的是没有太大乐趣, 如果不下班后培养自己的兴趣爱好, 或者技术精进的话, 那确实很快就变成社畜了, 虽然谈什么, 遭受社会的毒打啥的, 有些过分, 但确实, 这种日子也不算太友好. 要么就很容易消磨斗志, 甘于平庸, 要么就自怨自艾, 归根到底, 其实就是对于自己庸碌而不甘的无奈感...

不扯了...

数据类型

跟其他的编程一样, 也将 TensorFlow 看做一门 "编程语言" 来看待, 这样就能很好理解所谓的数据类型了. 即经常谈及的, 数值类型, 字符串, 布尔类型等.

数值类型

张量 (tensor) 是 tensorflow 的主要数据载体, 根据 维度 Dimension 可划分为:

  • 标量 (Scalar) 单个的实数, 如 1, 2, 3, 4 等, 其 维度 Dimension 为 0, shape 为 [ ]
  • 向量 (Vector) n 个实数的有序集合, 通过中括号包裹, Dimension 为 1, shape 为 [ n ]
  • 矩阵 (Matrix) n 行 m 列 实数的集合, 如 [ [1,2], [3, 4] ], 维数为2, 长度不定, shape 为 [n, m ]
#  矩阵,有行, 列
| 1, 2|
| 3, 4|
  • 张量 (Tensor) 即所有维度数 dim > 2 的数组都通常为 张量. 张量的每个维度, 也称作 **轴 (Axis) **.

一般维度代表了具体的物理意义. 比如 shape 为 [ 1, 2, 3, 4 ] 的张量共有 4 维, 如果表示图的话, 每个 维度 / 轴 分别表示图片的 数量, 高度, 宽度, 通道数(RGB) .

彩色图片的 shape 为 [ 2, 32, 32, 3] 表示 有 2张图片, 宽高都是32, 有3个通道(RGB)

一般将标量, 向量, 矩阵等也统称的 张量, 不做区分, 维度要自己来判断, 来看一波是如何创建的.

import tensorflow as tf 

#  创建标量

# Python 的方式直接整
num = 666 tf_num = tf.constant(6.66) print(type(num), type(tf_num), tf.is_tensor(tf_num))
<class 'int'> <class 'tensorflow.python.framework.ops.EagerTensor'> True

通过 print 的方式, 可以打印出 张量的 具体相关信息.

arr_01 = tf.constant([1, 2, 3, 6.66])
arr_02 = tf.constant([[1,2,3], [4,5,6.66]]) print(arr_01)
print(arr_02)
tf.Tensor([1.   2.   3.   6.66], shape=(4,), dtype=float32)

tf.Tensor(
[[1. 2. 3. ]
[4. 5. 6.66]], shape=(2, 3), dtype=float32)

非常直观哈, shape 表示 张量的形状, 还是要注意区分向量是 (n, ) 的 一维哦, dtype 表示数值精度, 张量对象的 numpy 方法可以返回Numpy.array 的类型数据, 就是为了, 方便导出和使用吧.

arr_02.numpy()
array([[1.  , 2.  , 3.  ],
[4. , 5. , 6.66]], dtype=float32)

与标量不同在于, 向量的定义, 须通过 List 容器来传给 tf.constant( ).

tf_arr = tf.constant([1, 2, 3])

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

同样, 定义矩阵, 传入一个, 二维数组即可呀.

tf_matrix = tf.constant([[1,2,3], [4,5,6]])

print(tf_matrix)
print(tf_matrix.shape) # [row, col]
tf.Tensor(
[[1 2 3]
[4 5 6]], shape=(2, 3), dtype=int32) # 2 行 3列 的 shape
(2, 3)

同样, 3维的张量, 也是同样的定义哦.

# 3 维张量
tf_3D = tf.constant(
[
[
[1, 2],
[3, 4],
[5, 6],
[7, 8]
]
]
) print(tf_3D)
tf.Tensor(
[[[1 2]
[3 4]
[5 6]
[7 8]]], shape=(1, 4, 2), dtype=int32)

字符串类型

我觉得字符串是编程中主要的处理对象吧, 但只有在数据科学这块, 数值才是成为了主要的处理对象,诸如业务数据, 图片数据, 文本向量化等, 但字符串, 始终还是占据非常, 非常重要的地位啊, 在编程上, 不过在 深度学习这块, 似乎就没那么重要了哦.

tf_str = tf.constant("Hello,world!")

print(tf_str)
tf.Tensor(b'Hello,world!', shape=(), dtype=string)

在 tf.strings 模块中, 提供了常见的字符串类型的工具函数, 如 大小写转换 lower() .., 拼接 join( ), 分割 split( ) 长度 length ( ) 等.

#  字符串 - 基本处理
print(tf.strings.lower(tf_str))
print(tf.strings.length(tf_str))
print(tf.strings.split(tf_str))
tf.Tensor(b'hello,world!', shape=(), dtype=string)
tf.Tensor(12, shape=(), dtype=int32)
tf.Tensor([b'Hello,world!'], shape=(1,), dtype=string

不整了, 就这样吧, 深度学习中, 还是张量的天下, 字符串这块, 使用上就比较低了呀, 不展开了.

布尔类型

在创建布尔类型标量时, 只需要将 Python 的 True 和 False 传递给 tf.constant( ) 即可. 但值得注意的是,tf 的布尔 和 Pyhton 的布尔是不等价(对象)的哦.

tf_true = tf.constant(True)
tf_bool_lst = tf.constant([True, False, False]) print(tf_true)
print(tf_bool_lst)
print(tf_true) is True
tf.Tensor(True, shape=(), dtype=bool)
tf.Tensor([ True False False], shape=(3,), dtype=bool) False

小结

  • tensorflow 的基本数据类型, 数值, 字符串, 布尔值等, 数值这块是主要探讨的内容.
  • 重点是对 张量 tensor 有直观认识, 包括 标量, 向量, 矩阵, 张量.. 理解 维度 dim 和 形状 shape 的意义
  • 结合 numpy 数组来理解张量, 就会好很多, 这些知识果然都是相关联的, 在数据科学这块

TensorFlow 基础 (01)的更多相关文章

  1. javascript基础01

    javascript基础01 Javascript能做些什么? 给予页面灵魂,让页面可以动起来,包括动态的数据,动态的标签,动态的样式等等. 如实现到轮播图.拖拽.放大镜等,而动态的数据就好比不像没有 ...

  2. Androd核心基础01

    Androd核心基础01包含的主要内容如下 Android版本简介 Android体系结构 JVM和DVM的区别 常见adb命令操作 Android工程目录结构 点击事件的四种形式 电话拨号器Demo ...

  3. java基础学习05(面向对象基础01)

    面向对象基础01 1.理解面向对象的概念 2.掌握类与对象的概念3.掌握类的封装性4.掌握类构造方法的使用 实现的目标 1.类与对象的关系.定义.使用 2.对象的创建格式,可以创建多个对象3.对象的内 ...

  4. Linux基础01 学会使用命令帮助

    Linux基础01 学会使用命令帮助 概述 在linux终端,面对命令不知道怎么用,或不记得命令的拼写及参数时,我们需要求助于系统的帮助文档:linux系统内置的帮助文档很详细,通常能解决我们的问题, ...

  5. 可满足性模块理论(SMT)基础 - 01 - 自动机和斯皮尔伯格算术

    可满足性模块理论(SMT)基础 - 01 - 自动机和斯皮尔伯格算术 前言 如果,我们只给出一个数学问题的(比如一道数独题)约束条件,是否有程序可以自动求出一个解? 可满足性模理论(SMT - Sat ...

  6. TensorFlow基础

    TensorFlow基础 SkySeraph  2017 Email:skyseraph00#163.com 更多精彩请直接访问SkySeraph个人站点:www.skyseraph.com Over ...

  7. LibreOJ 2003. 「SDOI2017」新生舞会 基础01分数规划 最大权匹配

    #2003. 「SDOI2017」新生舞会 内存限制:256 MiB时间限制:1500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据   题目描述 ...

  8. TensorFlow基础笔记(0) 参考资源学习文档

    1 官方文档 https://www.tensorflow.org/api_docs/ 2 极客学院中文文档 http://www.tensorfly.cn/tfdoc/api_docs/python ...

  9. TensorFlow基础笔记(3) cifar10 分类学习

    TensorFlow基础笔记(3) cifar10 分类学习 CIFAR-10 is a common benchmark in machine learning for image recognit ...

  10. java基础 01

    java基础01 1. /** * JDK: (Java Development ToolKit) java开发工具包.JDK是整个java的核心! * 包括了java运行环境 JRE(Java Ru ...

随机推荐

  1. python进行大乐透和双色球选号(LSTM预测和随机选号)

    文章仅供参考学习 1.LSTM预测 首先去爬取数据 这个是爬取大乐透的,从07年爬到最新一期 import requests from bs4 import BeautifulSoup import ...

  2. MybatisPlus - [02] HelloWorld

    参考:https://www.cnblogs.com/haoxinyue/p/5208136.html(分布式系统唯一ID生成方案汇总) 一.准备工作 (1)创建数据库: create databas ...

  3. Log4j2 中三种常见 File 类 Appender 对比与选择

    在 Log4j2 中,若不考虑 Rolling(支持滚动和压缩)类文件 Appender,则包含以下三种文件 Appender:FileAppender.RandomAccessFileAppende ...

  4. PHP测试代码执行时间

    https://blog.csdn.net/wyqwclsn/article/details/39930125 非常简单代码开始前加一个$start = microtime(true);代码结束后加一 ...

  5. GPT-4.5 感觉有点拉胯,但其实是 OpenAI 迄今为止最大的一步赌注

    Alberto Romero I. GPT-4.5 就是起跳前的助跑那一步 OpenAI 推出了 GPT-4.5(官方博客.系统卡片.演示视频),这是他们最新也是目前最大的一款 AI 模型.他们其实一 ...

  6. 《空间三角面片对相交判断算法》的matlab实现_ 0.2微秒

    function [flag] = InsectTriPatch(T1,T2) % 判断两个空间三角形面片是否相交 % T1=[0 0 0; % 2 0 0; % 0 1.5 0; % 0 0 1]; ...

  7. 【Bug记录】uniapp开发时pages.json和manifest.json注释报错解决方案

    pages.json和manifest.json注释报错问题解决 增强 pages.json和 manifest.json 开发体验 json文件写注释 用 VsCode 开发 uni-app 项目时 ...

  8. Oracle 对 Json 数据进行增删改

    1.背景: 由于项目要求,需要对大型的 Json 数据入库到DB中(clob 类型),由于内容过长或者 oracle 版本限制,有一些熟知的处理方法是不能使用的. 精确解决问题,可以直接看第四步:[4 ...

  9. 『Plotly实战指南』--折线图绘制进阶篇

    上一篇介绍了Plotly绘制折线图的基础知识和数据预处理的技巧, 本文将重点探讨如何利用Plotly实现多线折线图的布局设计以及动态折线图的实现, 让我们一起掌握进阶的折线图绘制技巧. 1. 多折线图 ...

  10. gazebo+rviz 仿真

    博客地址:https://www.cnblogs.com/zylyehuo/ gazebo小车模型创建及键盘操控详见之前的博客 gazebo小车模型(附带仿真环境) - zylyehuo - 博客园 ...