
发表日期: 2021-04-27 12:46:46 浏览次数:160
丹阳微信公众号开发【丹阳网络推广】丹阳建站、丹阳网站维护、丹阳网页制作、丹阳微信小程序代运营公司
丹阳市,江苏省辖县级市,由镇江市代管,位于江苏省南部,介于北纬31°44′~32°08′、东经119°23′~119°53′之间,总面积1047平方公里。丹阳属亚热带季风气候,具有气候湿润、光照充足、雨量丰沛、无霜期长、四季分明的气候特征。截至2019年,丹阳市辖2个街道、10个镇。常住人口80.63 万人。 [1]
丹阳建置始于战国时期,初为云阳邑。《山海经》中有一条河叫“丹水”,即丹江,根据“山水阴阳,水北为阳”的理论命名丹阳。 [2] 1987年12月,丹阳撤县设市,为丹阳市,由镇江市代管。丹阳市与常州市新北区交界处建有常州奔牛国际机场,沪宁高速公路(G42沪蓉高速)、312国道、122省道、338省道等是通过公路出入丹阳的主要干道,水运有京杭大运河纵贯丹阳,大港港口是对外开放的长江第三大港。 [3]
2019年,丹阳市实现地区生产总值1121.99亿元,同比增长4.7%。 [4] 2018年12月,入选全国县域经济综合竞争力100强,2018中国大陆最佳商业城市100强、中国最佳县级城市30强。 [5] 2019年10月8日,被评为2019年度全国综合实力百强县市。 [6] 2019全国营商环境百强县。 [7] 2019年国家卫生城市。 [8] 2020年12月,社科院发布《全国县域经济综合竞争力100强》,丹阳排名第40 [9] 。
链式法则是一个数学定理,用于计算复合函数的导数。从数学上讲,深度学习模型就是复合函数。因此,理解其导数的计算过程对于训练它们非常重要,接下来的几章将详述这一点。
在数学上,这个定理看起来较为复杂,对于给定的值 ,我们有:
其中 只是一个伪变量,代表函数的输入。
当描述具有一个输入和一个输出的函数
的导数时,可以将代表该函数导数的函数表示为
。可以用其他伪变量替代
,这样做并不会对结果造成影响,就像
和
表示同一个意思一样。
稍后,我们将处理包含多个输入(例如
和
)的函数。一旦碰到这种情况,区分
和
之间的不同含义就是有意义的。
这就是为什么在前面的公式中,我们在所有的导数中将
放在了底部:
和
都是接受一个输入并产生一个输出的函数,在这些情况下(有一个输入和一个输出的函数),我们将在导数符号中使用
。
对理解链式法则而言,本节中的数学公式不太直观。对此,盒子表示法会更有帮助。下面通过简单的 示例来解释导数“应该”是什么,如图 1-8 所示。

图 1-8:链式法则示意图
直观地说,使用图 1-8 中的示意图,复合函数的导数应该是其组成函数的导数的乘积。假设在第一个函数中输入 5,并且当 时,第一个函数的导数是 3,那么用公式表示就是
。
然后取第一个盒子中的函数值,假设它是 1,即 ,再计算第二个函数
在这个值上的导数,即计算
。如图 1-8 所示,这个值是 -2。
想象这些函数实际上是串在一起的,如果将盒子 2 对应的输入更改 1 单位会导致盒子 2 的输出产生 -2 单位的变化,将盒子 2 对应的输入更改 3 单位则会导致盒子 2 的输出变化 -6(-2×3)单位。这就是为什么在链式法则的公式中,最终结果是一个乘积:。
利用数学和示意图这两个维度,我们可以通过使用链式法则来推断嵌套函数的输出相对于其输入的导数值。那么计算这个导数的代码如何编写呢?
下面对此进行编码,并证明按照这种方式计算的导数会产生“看起来正确”的结果。这里将使用 square 函数 2 以及 sigmoid 函数,后者在深度学习中非常重要:
2参见 1.1 节的“NumPy 库中的基础函数”部分。
def sigmoid(x: ndarray) -> ndarray: ''' 将sigmoid函数应用于输入ndarray中的每个元素。 ''' return 1 / (1 + np.exp(-x))复制代码
现在编写链式法则:
def chain_deriv_2(chain: Chain, input_range: ndarray) -> ndarray: ''' 使用链式法则计算两个嵌套函数的导数:( f 2 f 1(x))′ = f 2′( f 1(x))*f 1′(x) 。 ''' assert len(chain) == 2, \ "This function requires 'Chain' objects of length 2" assert input_range.ndim == 1, \ "Function requires a 1 dimensional ndarray as input_range" f1 = chain[0] f2 = chain[1] # df1/dx f1_of_x = f1(input_range) # df1/du df1dx = deriv(f1, input_range) # df2/du(f1(x)) df2du = deriv(f2, f1(input_range)) # 在每一点上将这些量相乘 return df1dx * df2du复制代码
图 1-9 绘制了结果,并展示了链式法则的有效性:
PLOT_RANGE = np.arange(-3, 3, 0.01)chain_1 = [square, sigmoid]chain_2 = [sigmoid, square]plot_chain(chain_1, PLOT_RANGE)plot_chain_deriv(chain_1, PLOT_RANGE)plot_chain(chain_2, PLOT_RANGE)plot_chain_deriv(chain_2, PLOT_RANGE)复制代码

图 1-9:链式法则的有效性3

服务热线
顶部
备案号: 苏ICP备11067224号
CopyRight © 2011 书生商友信息科技 All Right Reserved
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: http://www.768800.com 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
服务热线:400-111-6878