# 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 image-20210913075027067 sigmod 靠近0时陡峭 很少用在多层感知机中间层 image-20210913075044000 tanh image-20210913075140943 真瞧不起这些打广告的 先到这吧~~~ ``` 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多的收费教程 热乎的 错过不再有