Toggle navigation
Mr.Strawberry's House
文章
网址导航
更多
甜品站
杂物间
新版博客
关于 快刀切草莓君
友情链接
妙妙屋开发日志
注册
登录
搜索
文章列表
分类 标签
归档
# Tensorflow学习笔记 学习MOOC课程过程中记录的 ## 神经网络计算 ### 基本概念 - `tf.constant(数据, dtype=数据类型(可选))`数据类型`tf.int32`、`tf.float32`、`tf.float64`、`tf.bool`、`tf.string` - numpy格式转换为tensor格式: `tf.convert_to_tensor(数据名, dtype=数据类型)` ``` a = np.arange(0, 5) b = tf.convert_to_tensor( a, dtype=tf.int64 ) ``` - 采用不同函数创建**不同值的张量** 1. `tf.zeros(维度)` 创建全为0的张量 2. `tf.ones(维度)` 全为1 3. `tf.fill(维度, 指定值)` 全为指定值的张量 - 采用不同函数**创建符合不同分布**的张量 1. 正态分布 `tf.random.normal(维度, mean=均值, stddev=标准差)` 默认均值0标准差1 2. 截断式正态分布 `tf.random.truncated_mormal(维度, mean=均值, stddev=标准差)` 保证生成值在均值附近 3. 均匀分布随机数 `tf.random.uniform(维度, minval=最小值, maxval=最大值)` 前闭后开区间 ### 常用函数 - 数据类型转换 `tf.cast(张量, dtype=类型)` 计算张量维度上元素的最小值`tf.reduce_min(张量)` 最大值`tf.reduce_max(张量)` - 计算张量沿知道那个维度的平均值 `tf.reduce_mean(张量, axis=目标轴)` 求和`f.reduce_sum(张量, axis=目标轴)` 如果不指定axis则表示对所有的元素进行操作 - 声明可训练的变量`tf.Variable(initial_value,trainable,validate_shape,name)` initial_value默认None,可搭配随机生成函数来初始化, trainable 默认True, validate_shape形状不接受改变 ``` #随机生成正态分布的变量 w = tf.Variable(tf.random.normal([2, 2], mean=0, stddev=1)) ``` - 四则运算(只有维度相同的张量才可以进行) 1. `tf.add(A, B)` 2. `tf.subtract(A, B)` 3. `tf.multiply(A, B)` 4. `tf.divide(A, B)` - 幂运算 `tf.square(A)`, `tf.pow(A, n)`, `tf,sqrt(A)` - 矩阵相乘 `tf.matmul(A, B)` - 切分传入张量的第一位维度,生成输入特征/标签对 `tf.data.Dataset.from_tensor_slices((输入特征, 张量))` - 可利用`tf.GradientTape()`搭配with结构计算损失函数在某一张量处的梯度 ``` #损失w^2 w当前取0.3 计算梯度为0.6 with tf.GradientTape( ) as tape: w = tf.Variable(tf.constant(0.3)) loss = tf.pow(w,2) grad = tape.gradient(loss,w) print(grad) `` - `tf.one_hot(待转换数据, depth=分类数)`独热码表示标签 ``` labels = tf.constant([1,4,2]) # 输入的元素值 4 超出 depth-1 output = tf.one_hot(labels,depth=3) >tf.Tensor([[0. 1. 0.] [0. 0. 0.] [0. 0. 1.]], shape=(3, 3), dtype=float32) ``` - `tf.nn.softmax()` 使前项传播的输出符合概率分布,进而与独热码形式的标签作比较。 - `tf.argmax(A, axis=轴)` 返回张量沿指定轴的最大值的索引 ``` test = np.array([[1, 2, 3], [2, 3, 4], [5, 4, 3], [8, 7, 2]]) print( tf.argmax (test, axis=0)) # 返回每一列(经度)最大值的索引 print( tf.argmax (test, axis=1)) # 返回每一行(纬度)最大值的索引 结果: [3 3 1] [2 2 0 0] ``` ## 神经网络优化 `tf.where(条件语句, 真返回值A, 假返回值B)` `rmd = np.random.RandomState(seed=1)` 设定种子 `rmd.rand()` 维度为空 返回随机标量 `rmd.rand(2,3)` 返回维度2行3列 `np.vstack((a,b))`将两个数组按垂直方向叠加 a[1,2,3] b [4,5,6] > [[123],[456]] `np.mgrid[ 起始值 : 结束值 : 步长 ,起始值 : 结束值 : 步长 , …]` 返回相应的矩阵,多个组就是多个矩阵 `nparray.ravel()`将x变为一维矩阵 `np.c_[x.ravel(), y.ravel()]` 类似zip ### 激活函数 `tf.nn.sigmoid(x)` 导数输出 0~0.25 多层网络结果->0梯度消失 存在幂运算,计算复杂度大 `tf.math.tanh(x)` `tf.nn.relu(x)` `tf.nn.leaky_relu(x)` 中国大学MOOC课程 [链接](https://www.icourse163.org/course/PKU-1002536002)
文章信息
标题:Tensorflow 学习笔记
作者:快刀切草莓君
分类:机器学习
发布时间:2020年4月10日
最近编辑:2020年4月10日
浏览量:1105
↑