博主【何宽】分享的【作业参考】已经非常完善,但我直接复制完整代码在自己的虚拟机上跑还是有些小问题,针对这些问题我在此提出其中一些需要注意的地方。
<tr >标签
突然出现一部分带这种标签的代码,去查了一下发现是HTML的标签,出现在这是想说明什么我没太在意,直接跳到了下面的initialize_parameters_deep函数,结果没影响。
关于initialize_parameters_deep函数
其中在初始化W参数时有个“除以np.sqrt[layers_dims[l - 1]”的操作(其中np.sqrt(B)函数是求B的开方),直接键入代码测试输出与博主的不一致。将其改成*0.01的操作后测试输出与博主一致。此外,还存在缩进问题,即for循环中应有四行代码。综上,将该函数改为
L_model_forward函数
里面参数L=len(parameters)//2,注释里说parameters是initialize_parameters_deep()的输出,而因为该输出包含相同长度的W和b,也就是说它长度一定是2的整数倍,那为什么还要用//向下取整,而不是直接L=len(parameters)/2?
把代码中的//改成/之后,运行报错,提示:
意思是改成/之后,L就变成了浮点型,而不是整形。为了进一步验证,尝试以下输入:
按照这个道理,我把代码改成L=int(len(parameters)/2),点击运行,结果也是一样的。(好吧这一部分不明白的原因就是自己的语法基础不扎实,提出来是为了让和我一样有疑惑的同学明白这里为啥这样写)
另,关于for循环,从range(1,L),l的值是从1到L-1.这也是基础语法知识。
two_layer_model函数
grads和costs都没有定义,应该在for循环前加以定义,即
定义后运行代码,成功!但结果和原博主的有有差别:
L层模型运行结果
按照博主设置的层参数(12288,20,7,1),我跑出来的结果很不理想,最后收敛在0.64.
来源:CSDN
作者:泼夫
链接:https://blog.csdn.net/Clover_pofu/article/details/104460206