# tensorflow-stu
**Repository Path**: iacs/tensorflow-stu
## Basic Information
- **Project Name**: tensorflow-stu
- **Description**: tensorflow学习,参考:
https://study.163.com/course/courseLearn.htm?courseId=1004573006
- **Primary Language**: Python
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-09-13
- **Last Updated**: 2021-09-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
### TensorFlow 2.0
##### 参考:
https://www.bilibili.com/video/BV1Zt411T7zE
qq群: 738790253
### 1 概述
2.0 学习曲线平滑
使用keras和eager execution轻松构建模型
tf.keras允许创建更复杂的拓扑,轻松创建自定义循环,实现可定制逻辑
任意平台部署,服务器\边缘设备\网页
##### tf.keras
构建和训练模型的核心高级api
1.顺序模型
2.函数式api
##### eager模式与自定义训练
直接迭代和直观调试
求解梯度
##### tf.data
加载图片数据与结构化数据
##### tf.function
自动图运算
##### 卷积神经网络
##### 多输出卷积神经网络综合实例
##### 迁移学习
##### 模型保存
##### 可视化
#### 2 环境搭建
cuda可以模拟gpu环境
```
# win环境需要安装vc++,安装后重启
# python 3.5-3.7
# 推荐使用miniconda,直接下一步即可
# 开始 -> Anaconda Prompt
# tf 2.3 cpu版本安装
# 升级pip(如果小于19.0)
# 查看版本(默认是满足的)
# pip -V
# 安装tf
============环境搭建步骤============
安装miniconda
https://conda.io/en/latest/miniconda.html#windows-installers
选择64位Python 3.7版本
开始 -> Anaconda Prompt
pip install tensorflow-cpu==2.3.0 -i https://pypi.douban.com/simple/
# 测试
python
import tensorflow as tf
print(tf.__version__)
# 安装matplotlib notebook
pip install matplotlib notebook -i https://pypi.douban.com/simple/
# 运行notebook
jupyter notebook
============环境搭建步骤============
============可选============
# gpu版本安装
# 验证显卡版本
nvidia-smi
# 依赖库
# cuda 10.1
# cudnn 版本不小于7.6
# 设置conda国内源
# 参考:
https://mirror.tuna.tsinghua.edu.cn/help/anaconda/
conda install cudatoolkit=10.1
conda install cudnn=7.6.5
pip install tensorflow-gpu==2.3.0 -i https://pypi.douban.com/simple/
import tensorflow as tf
print(tf.__version__)
tf.test.is_gpu_available()
```
#### 3 tf.keras概述
##### 3.1 实现简单的线性回归
```
import tensorflow as tf
import pandas as pd
data = pd.read_csv('income.csv')
data
x = data.Education
y = data.Income
# 顺序模型
model = tf.keras.Sequential()
# 输入数据维度1
model.add(tf.keras.layers.Dense(1, input_shape=(1,)))
model.summary()
# 编译 优化算法adam 损失函数均方差mse
model.compile(optimizer='adam', loss='mse')
# 训练次数5000
history = model.fit(x, y, epochs=5000)
```
##### 3.2 梯度下降
学习率超参数是企业机密
深度学习中局部极值点不是问题
3.1使用了默认的学习速率
##### 3.3 多层感知器(神经网络)
单层神经元无法拟合异或操作(一条直线分割两个类)
大脑仿生
不线性可分 -> 插入更多神经元
激活 -> 拟合非线性问题
**激活函数**
relu
sigmod
靠近0时陡峭
很少用在多层感知机中间层
tanh
真瞧不起这些打广告的
先到这吧~~~
```
import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
```
##### 逻辑回归
是 否二元分类
sigmod函数映射到-1到1之间
深度学习网络本质是一个映射网络
分类问题使用交叉熵损失函数
交叉熵放大两种概率分布的损失
keras使用binary_crossentcopy计算二元交叉熵
##### softmax多分类
对数几率解决二分类问题
softmax是对数几率推广, 解决多分类问题
加权+非线性处理 -> 概率值
样本分量之和为1
只有两个类别时,与对数几率回归相同
keras使用categorical_crossentcopy和
sparse_categorical_crossentcopy计算softmax交叉熵
fashion mnist数据集
比常规minist数据集更具挑战
这两个数据集是良好的起点
70000张图片,10个类别
60000训练 10000评估
提示:
name 'train_image' is not defined
可以自上往下单步执行以下
梯度的输出向量表示每个位置损失函数增长最快的方向
学习率小多次迭代,学习率大震荡
**反向传播算法**
高效计算梯度
利用链式法则
计算导数 -> 反向传播 -> 复用
**优化函数**
SGD 随机梯度下降优化器 抽取小批量样本计算平均梯度
RmsSProp
Adam 最常用 ,对超参数不敏感,学习率建议0.0011
#### 网络优化与超参数选择
网络容量多 -> 层数多 -> 拟合能力强
速度难度大,易过拟合
**超参数选择**
神经元个数 层数
**提高拟合能力**
增加层 | 增加隐藏单元数
增加层 大大提高拟合能力,远大于增加隐藏单元数
单层神经元个数太小 -> 信息瓶颈 欠拟合
**dropout抑制过拟合**
人为丢掉一些单元
不同训练过程的结果是不同树
减少神经元的共适应关系
理想模型是在欠拟合和过拟合的界线上
参数选择原则:
1.开发一个过拟合模型(多层,层大,多轮)
2.抑制过拟合(dropout | 正则化 | 图像增强)
抑制过拟合最好是增加训练数据
3.调节超参数(经验)
交叉验证
总原则:
网络容量刚好拟合数据
#### 函数式api
可以构造多个输入 复用
#### tf.data模块
可以从多个数据源读取数据,然后处理数据
缓存,加速
tf.data.Dataset表示一系列元素,比如多个图像
#### notebook使用技巧
### 300多的收费教程 热乎的 错过不再有