深度学习tensorflow学习笔记

本文介绍了如何在Anaconda中安装TensorFlow 1.2,包括使用清华镜像加速,详细步骤包括创建虚拟环境、测试、卸载,还讲解了PyCharm的安装及Tensor的基本概念,如张量创建、数学运算、数据配对等。重点涉及神经网络参数更新和独热编码技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


不断更新,建议收藏


1.安装

1.1 Anaconda安装

验证anaconda是否安装成功的方法,在anaconda prompt中输入

conda --version

1.2 安装tensorflow

1.2.1 使用国内清华镜像

#连接清华镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/     
conda config --set show_channel_urls yes

1.2.2 安装tensorflow

#创建python环境
conda create -n tensorflow python=3.5.2
#激活环境,进入NAME环境,Windows下
conda activate [NAME]
#激活环境,进入NAME环境,Linux下
source conda activate [NAME]
#推出虚拟环境
conda deactivate [NAME]
#安装tensorflow
pip install tensorflow==2.1

1.2.3. 测试

#进入python
python
#导入tensorflow
import tensorflow as tf
tf.__version__
#显示所有环境名字envs

1.2.4.卸载虚拟环境

conda remove -n [name] --all

2. 安装pycharm

Step1:社区版pycharm,环境变量选上,重启电脑

Step2:pycharm环境配置

  • 新建工程
  • 设置环境变量
    环境变量设置

3. Tensor

Tensor是张量,实际上是一个多维数组,多维列表,用阶表示张量的维数

维数名字例子
0-D0标量s=123
1-D1向量v=[1,2,3]
2-D2矩阵m=[[1,2,3],[4,5,6],[7,8,9]]
n-Dn张量t=[[[

判断张量是几阶,就看方括号有几个,0个是0阶,张量可以表示0阶到n阶的数组

数据类型

tf.int,tf.float
tf.int 32,tf.float32,tf.float 64,32位整型、32位浮点、64位浮点
tf.bool
tf.constant([True,False])
tf.string
tf.constant(“hello”)

3.1 如何创建一个张量

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)

运行结果

3.1.1 指定值张量生成

  • tf.zeros(维度):创建全为0的张量
  • tf.ones(维度):创建全为1的张量
  • tf.fill(维度,指定值):创建全为指定值的张量。c=tf.fill([2,2],9),即使是一维也要写[],fill函数输入的是dim,zeros和ones输入的是shape
    • 一维直接写个数
    • 二维用[行,列]
    • 多维用[n,m,j,k,……]

3.1.2 随机张量生成

生成正态分布的随机数,默认均值为0,标准差为1

  • tf.random.normal(维度,mean = 均值,stddev = 标准差)
    生成截断式正态分布的随机数(使随机数更集中一些)

  • tf.random.truncated_normal(维度,mean = 均值,stddev = 标准差),保证生成的随机数在均值正负两倍标准差之内

3.1.3 常用函数

  • tf.cast(张量名,dtype=数据类型):强制tensor转换数据类型
  • tf.reduce_min(张量名):计算张量维度上的最小值
  • tf.reduce_max(张量名):计算张量维度上的最大值
  • tf.reduce_mean(张量名,axis=操作轴)
  • tf.reduce_sum(张量名,axis=操作轴)
  • tf.Variable() 将变量标记为可训练的,被标记的变量会在反向传播中记录梯度信息,神经网络训练中常用这个函数标记待训练的参数
#神经网络初始化参数w,首先,随机生成正态分布随机数,再给生成的随机数标记为可训练,在反向传播中通过梯度下降更新参数w
w = tf.Variable(tf.random.normal([2,2],mean=0,stddev=1))

3.1.4 数学运算函数

四则运算
  • td.add,tf.subtract,tf.multiply,tf.divide
    只有维度相同的张量才可以做四则运算

    • tf.add()
    • tf.subtract()
    • tf.multiply()
    • tf.divide()
      平方、次方与开方
    • tf.suqare,tf.pow,tf.sqrt
矩阵乘
  • tf.matmul
    对于一个二维张量或者数据来说,通过axis
    • axis:控制操作的方向
    • axis=0表示对第一个维度操作,
    • axis=1表示对第二个维度进行操作,axis=0表示纵向操作,axis=1表示横向操作,不指定axis,则对所有元素进行操作
colcol0col1col2col3col4
row0
row1
row2

3.1.5 数据与标签配对

神经网络在训练时,是把输入特征和标签配对后喂入网络的
tf.data.Dataset.from_tensor_slices

切分传入张量的第一维度,生成输入特征/标签对,构建数据集

3.1.6 求导函数

tf.GradientTape:实现某个函数对指定参数的求导运算,结合variable函数实现损失函数loss对参数w的求导数计算

使用with结构记录计算过程,gradient求出张量的梯度
求梯度

3.1.7 枚举函数

enumerate是枚举,可以枚举出每一个元素,并在元素前配上对应的索引号,组合为索引元素,常在for循环中使用 enumerate(列表名)

seq=['one','two','three']
for i,element in enumerate(seq):
  print(i,elment)

3.1.8 独热编码

在分类问题中,使用独热编码做标签,1表示是,0表示非
标签独热编码对应
表示:

tf.one_not(待转换数据,depth=几分类): 将待转换数据直接转换为独热编码格式
将1,0,2先排序

3.1.9 分类问题独热编码

分类问题中,神经网络完成前向传播,计算出每种类型的可能性大小,但是输出的y值只有符合概率分布后才能与独热码的标签做比较,使用公式(softmax激活函数)转换使输出符合概率分布

softmax函数: tf.nn.softmax(x),使n分类的n个输出符合概率分布,也就是每个输出值变为0到1之间的概率值,这些概率的和为1
在这里插入图片描述

3.1.10 参数自更新

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表示纬度、横向
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值