预备知识
tf.where():
tf.where(条件语句,真返回A,假返回B) :条件语句真返回A,条件语句假返回B
a=tf.constant([1,2,3,1,1])
b=tf.constant([0,1,3,4,5])
c=tf.where(tf.greater(a,b), a, b) # 若a>b,返回a对应位置的元素,否则返回b对应位置的元素
print("c:",c)
运行结果:
c: tf.Tensor([1 2 3 4 5], shape=(5,), dtype=int32)
np.random.RandomState.rand()
np.random.RandomState.rand(维度) :返回一个[0,1)之间的随机数,若维度为空,返回标量
import numpy as np
rdm=np.random.RandomState(seed=1) # seed=常数每次生成随机数相同
a=rdm.rand() # 返回一个随机标量
b=rdm.rand(2,3) # 返回维度为2行3列随机数矩阵
print("a:",a)
print("b:",b)
运行结果:
a: 0.417022004702574
b: [[7.20324493e-01 1.14374817e-04 3.02332573e-01]
[1.46755891e-01 9.23385948e-02 1.86260211e-01]]
np.vstack()
np.vstack(数组1,数组2):将两个数组按垂直方向叠加
import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
c = np.vstack((a,b))
print("c:\n",c)
c:
[[1 2 3]
[4 5 6]]
np.mgrid[ ] 、 .ravel( )、 np.c_[ ]
np.mgrid[ 起始值 : 结束值 : 步长 ,起始值 : 结束值 : 步长 , … ]
x.ravel( ) 将x变为一维数组,“把. 前变量拉直”
np.c_[ ] 使返回的间隔数值点配对
np.c_[ 数组1,数组2, … ]
import numpy as np
x, y = np.mgrid [1:3:1, 2:4:0.5]
grid = np.c_[x.ravel(), y.ravel()]
print("x:",x)
print("y:",y)
print('grid:\n', grid)
运行结果:
x = [[1. 1. 1. 1.]
[2. 2. 2. 2.]]
y = [[2. 2.5 3. 3.5]
[2. 2.5 3. 3.5]]
grid:
[[1. 2. ]
[1. 2.5]
[1. 3. ]
[1. 3.5]
[2. 2. ]
[2. 2.5]
[2. 3. ]
[2. 3.5]]
神经网络复杂度
神经网络复杂度多用神经网络层数和神经网络参数的个数表示。
空间复杂度:
层数=隐藏层的层数+1个输出层
如上图:两层的神经网络
总参数=总w+总b
如上图:34+4(第一层)+42+2(第二层)=26
时间复杂度:
乘加运算次数,如上图:34(第一层)+42(第二层)=20
学习率
例如:
损失函数loss =
(
w
+
1
)
2
(w+1)^2
(w+1)2 , 则w的偏导是2w+2
指数衰减学习率:
指数衰减学习率是先使用较大的学习率来快速得到一个较优的解,然后随着迭代的继续,逐步减小学习率,使得模型在训练后期 更加稳定。指数型学习率衰减法是最常用的衰减方法,在大量模型中都广泛使用。
指数衰减学习率 =
(
初
始
学
习
率
∗
学
习
率
衰
减
率
)
(
当
前
轮
数
/
多
少
轮
衰
减
一
次
)
(初始学习率 * 学习率衰减率)^( 当前轮数 / 多少轮衰减一次 )
(初始学习率∗学习率衰减率)(当前轮数/多少轮衰减一次)
如下图,
运行结果: