@@ -427,7 +427,7 @@ for b in range(0, x.shape[1], 5):
...
@@ -427,7 +427,7 @@ for b in range(0, x.shape[1], 5):
尽管生成批量被视为预处理数据的一部分,但通常会在训练过程的`for`循环内部对其进行编程。
尽管生成批量被视为预处理数据的一部分,但通常会在训练过程的`for`循环内部对其进行编程。
## 一键编码
## 单热编码
将所有字符转换为数字不足以将其输入模型。 这是因为这种近似会给您的模型带来一些偏差,因为转换为更高数值的字符将被视为更重要。 为避免这种情况,优良作法是将不同批量编码为一热矩阵。 这包括创建一个具有零和一的三维矩阵,其中零表示不存在事件,而一个表示存在事件。 矩阵的最终形状应为`one hot = [number of sequences, sequence length, number of characters]`。
将所有字符转换为数字不足以将其输入模型。 这是因为这种近似会给您的模型带来一些偏差,因为转换为更高数值的字符将被视为更重要。 为避免这种情况,优良作法是将不同批量编码为一热矩阵。 这包括创建一个具有零和一的三维矩阵,其中零表示不存在事件,而一个表示存在事件。 矩阵的最终形状应为`one hot = [number of sequences, sequence length, number of characters]`。
...
@@ -435,7 +435,7 @@ for b in range(0, x.shape[1], 5):
...
@@ -435,7 +435,7 @@ for b in range(0, x.shape[1], 5):
对于第一个全连接层,我们有 1,024 个输入(通过将最大池后的`64 x 4 x 4`张量展平而获得)和 512 个输出。 对于最后一个全连接层,我们有 512 个输入和 10 个输出,代表输出类别的数量。 我们还为全连接层定义了一个丢弃层,概率为 0.3。
对于第一个全连接层,我们有 1,024 个输入(通过将最大池后的`64 x 4 x 4`张量展平而获得)和 512 个输出。 对于最后一个全连接层,我们有 512 个输入和 10 个输出,代表输出类别的数量。 我们还为全连接层定义了一个丢弃层,概率为 0.3。
接下来,我们定义`forward()`方法,将`__init__()`方法中定义的组件连接在一起。 因此,输入批量的 16 个张量(每个张量为`32 x 32 x 3`)经过第一个卷积层,然后经过 ReLU,然后是最大合并层,以形成尺寸为`16 x 16 x 16`的输出张量,然后通过第二个卷积层,然后是 ReLU 和最大池层,输出的尺寸为`8 x 8 x 32`,然后是第三个卷积层,然后是 ReLU 和最大池 层,尺寸为`4 x 4 x 64`。此后,我们将图像展平为 1,024 个元素的向量,并将其通过丢弃层传递到第一个全连接层,提供 512 个输出,然后是 ReLU 和 在最后一个全连接层中删除,以提供所需的输出数量,本例中为 10。
接下来,我们定义`forward()`方法,将`__init__()`方法中定义的组件连接在一起。 因此,输入批量的 16 个张量(每个张量为`32 x 32 x 3`)经过第一个卷积层,然后经过 ReLU,然后是最大合并层,以形成尺寸为`16 x 16 x 16`的输出张量,然后通过第二个卷积层,然后是 ReLU 和最大池化层,输出的尺寸为`8 x 8 x 32`,然后是第三个卷积层,然后是 ReLU 和最大池 层,尺寸为`4 x 4 x 64`。此后,我们将图像展平为 1,024 个元素的向量,并将其通过丢弃层传递到第一个全连接层,提供 512 个输出,然后是 ReLU 和 在最后一个全连接层中删除,以提供所需的输出数量,本例中为 10。