学习笔记整理:深度学习1-环境搭建、TensorFlow操作、回归问题、分类问题

一、深度学习关系及其概念

由大到小:人工智能->机器学习->神经网络->深度学习

1、应用:

①图片识别②目标检测③语义分割④图片生成⑤机器翻译⑥聊天机器人⑦文本生成⑧虚拟游戏⑨机器人⑩自动驾驶

2、学习框架为tensorflow

①在官网下载最新Anaconda

https://www.anaconda.com/download

②下载完毕之后打开Anaconda Prompt(i后面可跟其他镜像源)

pip install tensorflow -i https://mirrors.aliyun.com/pypi/simple/

③打开Jupyter Notebook,用浏览器访问本地8888

http://localhost:8888/

④右上角即可新建一个python文件

快捷键:
命令模式:Esc
编辑模式:enter
markdown模式:M
回到代码模式 : Y
运行并跳到下一段:shift+enter
只运行当前代码块:ctrl+enter
剪切:X
执行当前代码块并新建一个代码块:alt+enter
在上方新建一个:A(bove)
在下方新建一个:B(elow)
删除当前代码块:双击D
复制:C
粘贴:V
合并选中的单元格:Shift + M
分割cell中鼠标所在的位置:Ctrl + Shift + -
查看所有快捷键:H

二、TensorFlow操作

1、创建常量tf.constant()

//导入模块,后面的就不加了,tf的都是tensorflow模块
import tensorflow as tf
//不同类型
tf.constant(1)
tf.constant("hello")
tf.constant(True)
//向量
tf.constant([1,2])
//矩阵
tf.constant([[1,3,5],[3,4,7]])
//张量
tf.constant([
            [[1,2,3],[3,4,5]],
            [[5,6,6],[7,8,6]],
            [[5,6,6],[7,8,6]],
            [[5,6,6],[7,8,6]]
            ])



2、精度设置

精度分类如下:
tf.bool
tf.int16
tf.int32
tf.int64
tf.float16
tf.float32
tf.float64
//设置精度:
tf.constant(1, dtype = tf.int16)
//读取精度: 
x.dtype
//转换精度:
tf.cast(x, tf.float32)

3、创建特殊的张量

//创建全为1或0张量
tf.zeros([2,2])
tf.ones([2,2])
//创建自定义数值张量
//两行两列,全为99
tf.fill([2,2],99)
//建已知分布张量
//均匀分布
tf.random.uniform([1,5])
//正态分布
tf.random.normal([1,5])

4、切片

左闭右开!

5、增加/删除维度

//增加,在第二个维度后增加一个维度
tf.expand_dims(x,axis=2)
//降低,删除第二个维度
tf.squeeze(x,axis=2)
//变换维度
tf.reshape(x,[2,4,4,3])
tf.transpose(x,perm=[2,4,4,3])

6、运算符

7、合并和堆叠

注意:合并不改变维度,堆叠会改变

tf.concat([a,b],axis=0)
a.shape:[4,35,8]
b.shape:[6,35,8]
合成之后为[10,35,8]

tf.stack([a,b], axis = 0)
a.shape: [35,8] (2维)
b.shape: [35,8] (2维)
堆叠:[2,35,8] (3维)
注意:如果这的axis为1,那么结果是[35,2,8]

8、分割

result = tf.split(x, num_or_size_splits=[4,2,2,2],axis=0)
//第一个维度上

9、数据统计

//均值
tf.reduce_mean(x)
//最大值
tf.reduce_max(x)
//最小值
tf.reduce_min(x)

其中Softmax函数的含义就在于不再唯一的确定某一个最大值,而是为每个输出分类的结果都赋予一个概率值,表示属于每个类别的可能性。

import tensorflow as tf
logits = tf.constant([1, 2, 3, 4, 5], dtype=tf.float32)
softmax_result = tf.nn.softmax(logits)
print(softmax_result.numpy())

10、填充

//4张28*28的彩色图片,shape为:(4,28,28,3)
//但是神经网络只接受32*32的图片输入
tf.pad(x,[[0,0],[2,2],[2,2],[0,0]]) 

三、回归问题

1、梯度下降法

假设x与y线性关系:y=wx+b

找到合适的w——最小二乘法,机器——梯度下降

具体步骤:

①用随机值初始化权重和偏差

②把输入传入网络,得到输出值

③计算预测值和真实值之间的误差(均方误差)

④对每一个产生误差的神经元调整相应的权重,减小误差

⑤重复迭代,直到得到网络权重的最佳值

2、均方误差最小化

找到一条直线,使所有样本到直线上的欧式距离之和最小

四、分类问题

注:回归问题中的结果为连续值,分类问题中的结果值为离散值

1、归一化和标准化

①归一化:使得预处理的数据限定在一定的范围内,例如限定在[0,1],消除奇异样本带来的不良影响。好处是可以让每一层的输入大致固定。

②标准化:使得数据变为均值为0,标准差为1的正态分布。

2、数据偏移

某类的数据量过多或过少

解决方法:对数据进行筛选,但这样也容易去除大部分的数据,使得模型不准确。

3、f1-score

TP:预测正,结果正

FP:预测正,结果反

TN:预测反,结果反

FN:预测反,结果正

准确率:TP+TN/(TP+TN+FP+FN)

精确度:TP/(TP+FP)

召回率:TP/(TP+FN)

4、欠拟合和过拟合

欠拟合:表达能力弱,训练集和测试集的结果都不好

解决:

①增加神经网络层数

②增大隐藏层的参数量

③增大训练轮数

④查看学习率是否过低

过拟合:表达能力过强,训练集结果非常好,但是测试集结果很差

解决:

①减小神经网络的参数量

②提前停止

③使用正则化

④加入Dropout层

⑤数据增强/提升数据量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aure_xl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值