代码理解误区

发布时间 2023-04-28 20:46:08作者: 榫ning

1、在定义生成器的函数中,对于第一层卷积层,输入256*256*3的遮挡图,使用64个4*4的卷积核,步长为2,same填充,对于输出的图像尺寸一开始总觉得是256*256,因为一直觉得same填充时尺寸不发生改变,但是查了查步长的作用发现即使是用same填充,步长也会影响尺寸的大小,所以总结得出:求尺寸面对same填充时根据步长尺寸进行成倍的缩小,而面对valid填充时可以直接使用上一层的输出尺寸减去卷积层或者池化层的尺寸(Conv2D或者MaxPooling2D)然后是指减法结果除以步长,然后再加上1即可。

Stride的作用:是成倍缩小尺寸,而这个参数的值就是缩小的具体倍数,比如步幅为2,输出就是输入的1/2;步幅为3,输出就是输入的1/3。

未解决内容:Conv2D或者MaxPooling2D是什么含义?

                     3*3*1的张量和4*4*1的张量与2*2的卷积核在步长为2的same填充时输出结果都是2*2,不太搭步长成比减少的定义,需要延申探讨?

2、解码器是使用上采样层+卷积来完成的:输入为8*8*512,添加上采样层后,再进行卷积核改为256个,尺寸为4*4、步长为1、same填充的卷积操作后,为什么输出是16*16*256,16的由来与编码器时的步长无关嘛,还是说不管在编码器中卷积所用的步长为任意数,解码器在进行完第一层上采样+卷积之后尺寸都是会扩大2倍;如果编码器是步长都是3,那么在解码器在进行完第一层上采样+卷积后输出的特征图的尺寸会是输入图尺寸的3倍嘛?

3、在编码器与解码器的这个过程中所减少和增加的尺寸是只是对输入图进行放大缩小(所得到的区域是输入图的全部)还是通过对输入图进行放大缩小获得不同区域的图片(所得到的区域是输入图的某一部分)。?

4、生成器逐块进行summary展示

5、判别器中为什么拉伸之后变成一维的4*4*512*2=16384个元素的张量?

6、判别器中的全连接层里的内容为何是那样(输入神经元个数为1,是因为二分类嘛)?

7、生成器和判别器返回前的尺寸定义可以写在卷积之前嘛?

8、如何判别cpu与gpu的内存大小?