不断更新,建议收藏!
验证anaconda是否安装成功的方法,在anaconda prompt中输入
conda --version
#连接清华镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
#创建python环境
conda create -n tensorflow python=3.5.2
#激活环境,进入NAME环境
conda activate [NAME]
#安装tensorflow
pip install tensorflow == 2.1
#进入python
python
#导入tensorflow
import tensorflow as tf
tf.__version__
Step1:社区版pycharm,环境变量选上,重启电脑
Step2:pycharm环境配置
Tensor是张量,实际上是一个多维数组,多维列表,用阶表示张量的维数
维数 | 阶 | 名字 | 例子 |
---|---|---|---|
0-D | 0 | 标量 | s=123 |
1-D | 1 | 向量 | v=[1,2,3] |
2-D | 2 | 矩阵 | m=[[1,2,3],[4,5,6],[7,8,9]] |
n-D | n | 张量 | t=[[[ |
判断张量是几阶,就看方括号有几个,0个是0阶,张量可以表示0阶到n阶的数组
数据类型
Step1: 使用constant创建一个张量tf.constant
(张量内容,dtype=数据类型)
import tensorflow as tf
a = tf.constant([1,5],dtype=tf.int64)#创建一阶张量,数据类型为64位整型
print(a)
print(a.dtype)
print(a.shape)
结果分析:张量的形状看shape
的逗号隔开了几个数字,张量就是几维的。所以该张量就是一维的,数字为2
说明张量有两个元素,shape(2,5)
说明是两维的,2行5列
Step2: 将numpy的数据类型转化为Tensor数据类型(tf.convert_to_tensor(数据名,dtype=数据类型(可选)))
import tensorflow as tf
import numpy as np
a = np.arange(0,5)
b = tf.convert_to_tensor(a,dtype=tf.int64)
print(a)
print(b)
生成正态分布的随机数,默认均值为0,标准差为1
tf.random.normal(维度,mean
= 均值,stddev
= 标准差)
生成截断式正态分布的随机数(使随机数更集中一些)
tf.random.truncated_normal(维度,mean
= 均值,stddev
= 标准差),保证生成的随机数在均值正负两倍标准差之内
常用函数
#神经网络初始化参数w,首先,随机生成正态分布随机数,再给生成的随机数标记为可训练,在反向传播中通过梯度下降更新参数w
w = tf.Variable(tf.random.normal([2,2],mean=0,stddev=1))
td.add,tf.subtract,tf.multiply,tf.divide
只有维度相同的张量才可以做四则运算
col | col0 | col1 | col2 | col3 | col4 |
---|---|---|---|---|---|
row0 | |||||
row1 | |||||
row2 |
神经网络在训练时,是把输入特征和标签配对后喂入网络的
tf.data.Dataset.from_tensor_slices
切分传入张量的第一维度,生成输入特征/标签对,构建数据集
tf.GradientTape
:实现某个函数对指定参数的求导运算,结合variable
函数实现损失函数loss
对参数w
的求导数计算
使用with
结构记录计算过程,gradient
求出张量的梯度
enumerate
是枚举,可以枚举出每一个元素,并在元素前配上对应的索引号,组合为索引元素,常在for循环中使用 enumerate(列表名)
seq=['one','two','three']
for i,element in enumerate(seq):
print(i,elment)
在分类问题中,使用独热编码做标签,1表示是,0表示非
表示:
tf.one_not(待转换数据,depth=几分类): 将待转换数据直接转换为独热编码格式
分类问题独热编码
分类问题中,神经网络完成前向传播,计算出每种类型的可能性大小,但是输出的y值只有符合概率分布后才能与独热码的标签做比较,使用公式(softmax激活函数)转换使输出符合概率分布
softmax函数: tf.nn.softmax(x)
,使n分类的n个输出符合概率分布,也就是每个输出值变为0到1之间的概率值,这些概率的和为1
assign_sub
函数用于参数的自更新,等待更新的参数w要先被指定为可更新更训练,即在调用assign_sub
前,先用tf.Variable 定义变量w为可训练,才能实现自更新
w.assign_sub
(要自减的内容):w.assign_sub(1)
表示w=w-1
返回指定操作轴(维度)方向最大值的索引号
tf.argmax
(张量名,axis
=操作轴)
axis=0
表示经度、纵向axis=1
表示纬度、横向