1.2常用函数

本节目标:掌握在建立和操作神经网络过程中常用的函数

# 常用函数

import tensorflow as tf
import numpy as np # 强制Tensor的数据类型转换
x1 = tf.constant([1,2,3],dtype = tf.float64)
print(x1)
x2 = tf.cast(x1,tf.int32)
print(x2)
# 计算张量中最小的元素
print(tf.reduce_min(x2))
# 计算张量中最大的元素
print(tf.reduce_max(x2))
输出结果:
tf.Tensor([1. 2. 3.], shape=(3,), dtype=float64)
tf.Tensor([1 2 3], shape=(3,), dtype=int32)
tf.Tensor(1, shape=(), dtype=int32)
tf.Tensor(3, shape=(), dtype=int32)
# 理解axis,在一个二位张量或者数组中,可以通过调整axis等于0或者1控制执行维度
# axis=0代表跨行(经度,down),而axis=1跨列(纬度,across)
# 不指定axis,则所有元素参与计算
x = tf.constant([[1,2,3],
[4,5,6]])
print(x)
print(tf.reduce_mean(x)) # 求平均[2,5],平均为3
print(tf.reduce_sum(x,axis = 1)) # 求总和按行操作
输出结果:
tf.Tensor(
[[1 2 3]
[4 5 6]], shape=(2, 3), dtype=int32)
tf.Tensor(3, shape=(), dtype=int32)
tf.Tensor([ 6 15], shape=(2,), dtype=int32)
# tf.Variable()将变量标记为可训练,被标记的变量会在反向传播中被记录梯度信息
w = tf.Variable(tf.random.normal([2,2],mean= 0,stddev =1))
print(w)
输出结果:
<tf.Variable 'Variable:0' shape=(2, 2) dtype=float32, numpy=
array([[ 0.47072804, -0.7259878 ],
[-1.6562318 , 0.15564619]], dtype=float32)>
# 常用的运算函数
# 加法
a = tf.constant([1,2,3],dtype = tf.float32)
b = tf.constant([4,5,6],dtype = tf.float32)
print(tf.add(a,b))
# 减法
print(tf.subtract(a,b))
# 乘法
print(tf.multiply(a,b))
# 除法
print(tf.divide(b,a))
# 平方
print(tf.square(a))
# 次方
print(tf.pow(a,3))
# 开放
print(tf.sqrt(a))
# 矩阵乘法
c = tf.ones([3,2])
d = tf.fill([2,3],6.)
print(tf.matmul(c,d))
输出结果:
tf.Tensor([5. 7. 9.], shape=(3,), dtype=float32)
tf.Tensor([-3. -3. -3.], shape=(3,), dtype=float32)
tf.Tensor([ 4. 10. 18.], shape=(3,), dtype=float32)
tf.Tensor([4. 2.5 2. ], shape=(3,), dtype=float32)
tf.Tensor([1. 4. 9.], shape=(3,), dtype=float32)
tf.Tensor([ 1. 8. 27.], shape=(3,), dtype=float32)
tf.Tensor([1. 1.4142135 1.7320508], shape=(3,), dtype=float32)
tf.Tensor(
[[12. 12. 12.]
[12. 12. 12.]
[12. 12. 12.]], shape=(3, 3), dtype=float32)  
# 切分传入张量的第一维度,生成输入特征/标签配对,构成数据集
features = tf.constant([12,23,10,17])
labels = tf.constant([0,1,1,0])
# 对特征和标签进行一一配对
dataset = tf.data.Dataset.from_tensor_slices((features,labels))
print(dataset)
for element in dataset:
print(element)
输出结果:
<TensorSliceDataset shapes: ((), ()), types: (tf.int32, tf.int32)>
(<tf.Tensor: id=286, shape=(), dtype=int32, numpy=12>, <tf.Tensor: id=287, shape=(), dtype=int32, numpy=0>)
(<tf.Tensor: id=288, shape=(), dtype=int32, numpy=23>, <tf.Tensor: id=289, shape=(), dtype=int32, numpy=1>)
(<tf.Tensor: id=290, shape=(), dtype=int32, numpy=10>, <tf.Tensor: id=291, shape=(), dtype=int32, numpy=1>)
(<tf.Tensor: id=292, shape=(), dtype=int32, numpy=17>, <tf.Tensor: id=293, shape=(), dtype=int32, numpy=0>)
# 求导数运算
with tf.GradientTape() as tape:
w= tf.Variable(tf.constant(3.0))
loss = tf.pow(w,2)
# 对w2求w的倒数
grad = tape.gradient(loss,w)
print(grad)
输出结果:
tf.Tensor(6.0, shape=(), dtype=float32)
# 求导数运算
with tf.GradientTape() as tape:
w= tf.Variable(tf.constant(3.0))
loss = tf.pow(w,2)
# 对w2求w的倒数
grad = tape.gradient(loss,w)
print(grad)
输出结果:
0 one
1 two
2 three
# 独热编码:将张量中的每个元素按照规律独立编码,编码中0为否1为是
labels = tf.constant([0,1,2,3])
classes = 4
output = tf.one_hot(labels,depth = classes)
print(output)
输出结果:
tf.Tensor(
[[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]], shape=(4, 4), dtype=float32)
# 用softmax函数使得输出符合概率分布,将输出用e为底y为指数,求出每个输出的概率
# 对概率进行归一化操作
y = tf.constant([1.01,2.01,-0.66])
y_pro = tf.nn.softmax(y)
print("After softmax,y_pro is:",y_pro)
输出结果:
After softmax,y_pro is: tf.Tensor([0.25598174 0.69583046 0.0481878 ], shape=(3,), dtype=float32)
# 用assign_sub函数对参数进行自更新,赋值操作(更新参数为可训练)
w = tf.Variable(4)
# 对w进行自减一操作w = w -1
w.assign_sub(1)
print(w)
输出结果:
<tf.Variable 'Variable:0' shape=() dtype=int32, numpy=3>

# 返回张量沿指定维度最大值的索引
test = np.array([[1,2,3],
[4,5,6],
[7,8,9],
[10,11,12]])
print(test)
print(tf.argmax(test,axis = 0))
print(tf.argmax(test,axis = 1)) # 判断两个数是否相等,bool类型
correct = tf.equal(1,1)
print(correct)
输出结果:
[[ 1  2  3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
tf.Tensor([3 3 3], shape=(3,), dtype=int64)
tf.Tensor([2 2 2 2], shape=(4,), dtype=int64)
tf.Tensor(True, shape=(), dtype=bool) 本节对各个函数运用,对神经网络搭建和操作十分重要,请大家务必掌握。
												

tensorflow2.0学习笔记第一章第二节的更多相关文章

  1. tensorflow2.0学习笔记第一章第一节

    一.简单的神经网络实现过程 1.1张量的生成 # 创建一个张量 #tf.constant(张量内容,dtpye=数据类型(可选)) import tensorflow as tf import num ...

  2. tensorflow2.0学习笔记第一章第四节

    1.4神经网络实现鸢尾花分类 import tensorflow as tf from sklearn import datasets import pandas as pd import numpy ...

  3. tensorflow2.0学习笔记第一章第五节

    1.5简单神经网络实现过程全览

  4. tensorflow2.0学习笔记第一章第三节

    1.3鸢尾花数据读入 # 从sklearn包datasets读入数据 from sklearn import datasets from pandas import DataFrame import ...

  5. PRML学习笔记第一章

    [转] PRML笔记 - 1.1介绍 模式识别的目标 自动从数据中发现潜在规律,以利用这些规律做后续操作,如数据分类等. 模型选择和参数调节 类似的一族规律通常可以以一种模型的形式为表达,选择合适模型 ...

  6. Java 学习笔记 第一章:Java语言开发环境搭建

    第一章:Java语言开发环境搭建 第二章:常量.变量和数据类型 第三章:数据类型转换.运算符和方法入门 1.Java虚拟机——JVM JVM(Java Virtual Machine ):Java虚拟 ...

  7. C语言学习笔记第一章——开篇

    本文章B站有对应视频 (本文图片.部分文字引用c primer plus) 什么是C语言 顾名思义,c语言是一门语言,但是和我们所讲的话不同,它是一门编程语言,是为了让机器可以听懂人的意思所以编写的一 ...

  8. Java学习笔记 第一章 入门<转>

    第一章 JAVA入门 一.基础常识 1.软件开发 什么是软件? 软件:一系列按照特定顺序组织的计算机数据和指令的集合 系统软件:DOS,Windows,Linux 应用软件:扫雷.QQ.迅雷 什么是开 ...

  9. c#高级编程第七版 学习笔记 第一章 .NET体系结构

    第一章      .NET体系结构 本章内容: 编译和运行面向.NET的代码 Microsoft中间语言(Microsoft Intermediate Language,MSIL或简称IL)的优点 值 ...

随机推荐

  1. 计算机组成及系统结构-第九章 输入输出(I/O)设备

    输入输出(I/O)设备 一.外部设备概述 二.输入设备 1.键盘 2.光笔.图形板和画笔(或游动标)输入 3.鼠标.跟踪球和操作杆输入 4.触摸屏 5.图像输入设备 6.条形码 7.光学字符识别(OC ...

  2. Centos 7 下自启动服务配置

    在服务器部署服务后,往往需要将服务设置成开机自启的状态 ,以防设备出现宕机或断电重启,服务无法访问的情况. 对于常见的服务(httpd,mysqld,nginx)来说,可通过系统 systemctl ...

  3. mysql和oracle 关于多表join的区别

    http://stackoverflow.com/questions/10953143/join-performance-oracle-vs-mysql 翻译自上面的链接. Given a query ...

  4. 「雕爷学编程」Arduino动手做(13)——触摸开关模块

    37款传感器和模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器与模块,依照实践出真知(动手试试)的理念,以学习和交流为目的,这里准备 ...

  5. Spring 基于设值函数(setter方法)的依赖注入

    当容器调用一个无参的构造函数或一个无参的静态 factory 方法来初始化你的 bean 后,通过容器在你的 bean 上调用设值函数,基于设值函数的 DI 就完成了. 下述例子显示了一个类 Text ...

  6. Create First Application

    Node.js创建第一个应用 Node.js开发的目的就是为了用JavaScript编写Web服务器程序, 在使用Node.js时,不仅仅是在实现一个应用,同时还实现了整个HTTP服务器.在创建Nod ...

  7. tomcat依赖--linux

    https://tomcat.apache.org/download-90.cgi 下载 3,解压到usr/locat/tomcat 创建usr/local/tomcat Mkdir /usr/loc ...

  8. 【Copy攻城狮日志】docker搭建jenkins拉取svn代码打包vue项目部署到nginx

    ↑开局一张图,故事全靠编↑ 前言 打开搜索引擎输入『Copy攻城狮』,发现最新的一条记录已经是去年的4月,意味着我又有一年时间没有再总结成长了.习惯了“温水煮青蛙”的日子,无论是经验水平还是薪资收入, ...

  9. 基本的sql-select语句

    插入三张表: @d:/del_data.sql;                   @d:/hr_cre.sql;                   @d:/hr_popul.sql;select ...

  10. python常见面试题讲解(八)提取不重复的整数

    题目描述 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数. 输入描述: 输入一个int型整数 输出描述: 按照从右向左的阅读顺序,返回一个不含重复数字的新的整数 示例1 ...