声明,主要看的是这两个博客,比较全,以下是记录的一些个人疑问点:
【吴恩达课后编程作业】第二周作业 - Logistic回归-识别猫的图片 - Hosseini - 博客园 (cnblogs.com)
2.19 总结-深度学习-Stanford吴恩达教授_请考虑以下代码,c的维度是什么-CSDN博客
在此基础上的一些补充笔记
PIL和plt模块对比说明
Pillow 是 Python Imaging Library(PIL)的一个分支,允许打开、操作和保存各种图像文件格式(如 JPEG、PNG、GIF)。常用于图像输入神经网络之前的预处理任务中。
ndimage 模块提供了多种图像处理功能,包括过滤、形态学操作和几何变换。可以用于增强图像中的特征
plt.imshow()
和 PIL
的使用场景区别:
plt.imshow()
:- 这是 Matplotlib 的函数,主要用于在 Jupyter Notebook 或 Python 脚本中显示图像。
- 它适合可视化数据,特别是在绘图时,可以方便地处理图像的显示和调整。
PIL
:PIL
(Pillow)主要用于图像的加载、处理和保存。虽然它也可以用来显示图像(使用img.show()
),但显示功能较为基础。- 在需要对图像进行进一步处理或分析时,使用
PIL
更为合适。
因此,通常使用 PIL加载和处理图像,然后用 plt.imshow()显示,以便更好地与数据可视化工具结合。
plt.subplot(2, 3, 1)
的意思是设置一个 2 行 3 列的子图布局,并选择第一个子图进行绘制。
-1
在 reshape 中表示自动计算该维度的大小。具体来说,reshape 函数会根据原始张量的总元素数量和其他已指定的维度来推断出 -1 所代表的维度大小。
例如,如果你有一个形状为 (4, 3) 的张量,总共有 12 个元素:
- reshape(4, -1) 会返回形状为 (4, 3) 的张量,因为 4 已经指定,剩下的维度大小为 3。
- reshape(-1, 3) 会返回形状为 (4, 3),因为总元素数量为 12,推算出第一维为 4。
为了表示彩色图像,必须为每个像素指定红色,绿色和蓝色通道(RGB),因此像素值实际上是从0到255范围内的三个数字的向量。机器学习中一个常见的预处理步骤是对数据集进行居中和标准化,这意味着可以减去每个示例中整个numpy数组的平均值,然后将每个示例除以整个numpy数组的标准偏差。但对于图片数据集,它更简单,更方便,几乎可以将数据集的每一行除以255(像素通道的最大值),因为在RGB中不存在比255大的数据,所以我们可以放心的除以255,让标准化的数据位于 [0,1] 之间,
numpy函数中squeeze方法说明
该方法用于去除数组中维度为 1 的维度。如果 cost 的形状是 (1,),使用 cost = np.squeeze(cost)
后会变为一个标量(没有维度)。assert(cost.shape == ())
这个 assert 语句检查 cost 是否是标量(即没有维度),确保成本计算正确并且只返回一个单一的数值。