# 4.6 练习
用于在浏览器中对 MNIST 图像进行分类的 convnet(代码清单 4.1)具有两组 conv2d 和 maxPooling2d 层。修改代码以将数量减少到一组。回答以下问题:
- 这如何影响卷积网络可训练参数的总数?
- 这如何影响训练速度?
- 这对卷积网络训练后获得的最终准确性有何影响?
此练习类似于上面的练习 1。但是,与其尝试使用 conv2d-maxPooling2d 层组的数量,不如在代码清单 4.1 中尝试使用 convnet 的多层感知器部分中的密集层的数量。如果删除第一个密集层并仅保留第二个(输出)层,参数总数,训练速度和最终精度将如何变化?
从 mnist 节点中的卷积网络中删除 dropout 层(代码清单 4.5),并查看训练过程和最终测试准确性如何。为什么会这样呢?这说明什么?
作为使用 tf.browser.fromPixels()方法从网页的与图像和视频相关的元素中提取图像数据的一种做法,请尝试以下操作:
通过使用 img 标签,使用 tf.browser.fromPixels()获得表示彩色 JPG 图像的张量。
a. tf.browser.fromPixels()返回的图像张量的高度和宽度是多少?什么决定高度和宽度?b. 使用 tf.image.resizeBilinear()将图像调整为 100 * 100(高*宽)的固定尺寸
c. 改用替代调整大小函数 tf.image.resizeNearestNeighbor()。您能发现这两个调整大小函数的结果之间有什么区别吗?
创建一个 HTML 画布并使用诸如 rect()之类的函数在其中绘制一些任意形状。或者,如果愿意,可以使用 d3.js 和 three.js 等更高级的库在其中绘制更复杂的 2D 和 3D 形状。然后,使用 tf.browser.fromPixels()从画布获取图像张量数据。