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. js 实时获取屏幕高度并赋值

    var that = this; var h = 1344,w=750; var orderHight1 = document.body.clientHeight; var orderWidth1 = ...

  2. PAT 1009 Product of Polynomials (25分) 指数做数组下标,系数做值

    题目 This time, you are supposed to find A×B where A and B are two polynomials. Input Specification: E ...

  3. python机器学习(四)分类算法-决策树

      一.决策树的原理 决策树思想的来源非常朴素,程序设计中的条件分支结构就是if-then结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法 . 二.决策树的现实案例 相亲   相亲决策树 ...

  4. 01 基础版web框架

    01 基础版web框架 服务器server端python程序(基础版): import socket server=socket.socket() server.bind(("127.0.0 ...

  5. Jquery获取select option动态添加自定义属性值失效

    Jquery获取select option动态添加自定义属性值失效 2014/12/31 11:49:19 中国学网转载 编辑:李强 http://www.xue163.com/588880/3909 ...

  6. C# 数据操作系列 - 12 NHibernate的增删改查

    0. 前言 上一篇<C# 数据操作系列 - 11 NHibernate 配置和结构介绍> 介绍了Nhibernate里的配置内容.这一篇将带领大家了解一下如何使用NHIbernate.之前 ...

  7. hdu6007 spfa+完全背包

    题意:给你M,N,K,代表你有M点法力值,N个物品,K个制造方式 接下来N行,如果以1开头则代表既能卖又能合成,0代表只能卖. 然后K行,每行第一个数是要合成的东西,第二个数代表有几对,每对第一个数是 ...

  8. Mac Chrome浏览器取消自动升级(最新版)

    做自动化突然冒出错误:SessionNotCreatedException: session not created: This version of ChromeDriver only suppor ...

  9. json字符串转List集合

    public List<Map<String,PendingInfo>> jsonToList(String json){//PendingInfo可以换成其它bean类 Li ...

  10. springmvc-初次接触

    一,mvc做的事情 1,将url映射到java类或者java的方法. 2,封装用户提交的数据 3,处理请求--调用相关的业务处理--封装想相应的数据 4,将相应数据进行渲染,jsp或者html 二,s ...