提交 e0feabce 编写于 作者: W wizardforcel

2021-01-15 22:01:11

上级 0a791e63
......@@ -688,9 +688,9 @@ batch_size = 100
4. 从验证集错误 **B)**中减去训练集错误,并保存差值。
5. Take the differences calculated in Steps 3 and 4 and use the following set of rules:
如果在*步骤 3* 中计算出的差大于在*步骤 4* 中计算出的差,则该模型不适合,也称为遭受高偏差。
如果在“步骤 3”中计算出的差大于在“步骤 4”中计算出的差,则该模型不适合,也称为遭受高偏差。
如果在*步骤 4* 中计算出的差大于在*步骤 3* 中计算出的差,则模型过拟合,也称为遭受高方差,如下图所示:
如果在“步骤 4”中计算出的差大于在“步骤 3”中计算出的差,则模型过拟合,也称为遭受高方差,如下图所示:
![Figure 3.10: Diagram showing how to perform error analysis ](img/B15778_03_10.jpg)
......@@ -993,7 +993,7 @@ traced_script = torch.jit.trace(模型,示例)
2. 复制包含最佳性能模型的体系结构的类,并将其保存在 Python 文件中。 确保导入 PyTorch 所需的库和模块。 将其命名为 **final_model.py**
3. 在 Jupyter Notebook 中,保存性能最佳的模型。 确保保存与输入单元有关的信息以及模型参数。 将其命名为 **checkpoint.pth**
4. 打开一个新的 Jupyter Notebook。
5. 导入 PyTorch 以及我们在*步骤 2* 中创建的 Python 文件。
5. 导入 PyTorch 以及我们在“步骤 2”中创建的 Python 文件。
6. 创建一个加载模型的函数。
7. Perform a prediction by inputting the following tensor into your model:
......@@ -1008,7 +1008,7 @@ traced_script = torch.jit.trace(模型,示例)
0.0031,0.0021]])。float()
8. 使用 JIT 模块转换模型。
9. 通过从*步骤 7* 中输入张量到模型的跟踪脚本中来执行预测。
9. 通过从“步骤 7”中输入张量到模型的跟踪脚本中来执行预测。
10. 打开一个新的 Jupyter Notebook,然后导入使用 Flask 创建 API 所需的库以及加载已保存模型的库。
11. 初始化 Flask 应用。
12. 定义一个函数来加载保存的模型并实例化该模型。
......
......@@ -2278,7 +2278,7 @@
归还
此函数采用二维矩阵并将其展平。 接下来,它创建一个平坦矩阵的形状和包含字母的字典长度的零填充矩阵(在*步骤 3* 中创建)。 接下来,它用一个字符填充对应于批处理中每个字符的字母。 最后,它对矩阵进行整形以使其为三维。
此函数采用二维矩阵并将其展平。 接下来,它创建一个平坦矩阵的形状和包含字母的字典长度的零填充矩阵(在“步骤 3”中创建)。 接下来,它用一个字符填充对应于批处理中每个字符的字母。 最后,它对矩阵进行整形以使其为三维。
6. Create a class that defines the architecture of the network. This class should contain an additional function that initializes the states of the LSTM layers:
......
......@@ -128,7 +128,7 @@ cd Hands-on-One-Shot-Learning/Chapter01
conda create --name *environment_name* python=3.6
```
*步骤 3* `4`中,可以将`environment_name`替换为易于记忆的名称,例如`one_shot`或您选择的名称。
“步骤 3”`4`中,可以将`environment_name`替换为易于记忆的名称,例如`one_shot`或您选择的名称。
4. 使用以下命令激活环境:
......
......@@ -800,7 +800,7 @@ for batch_idx, (data, target) in enumerate(valid_loader):
data, target = data.to(device), target.to(device)
```
16.接下来,我们获得模型输出和损失,就像在*步骤 9**步骤 10**步骤 13* 中所做的那样:
16.接下来,我们获得模型输出和损失,就像在“步骤 9”,“步骤 10”和“步骤 13”中所做的那样:
```py
output = model(data)
......
......@@ -182,7 +182,7 @@ MDP 定义有五件事:
* 更新`Q`
* ![Deep Q-learning](img/B09475_07_009.jpg)
这里要注意的一件事是,我们将使用相同的 epsilon-greedy 策略在*步骤 6* 中选择动作,并在*步骤 8* 中更新相同的策略。 这种算法称为策略上算法。 从某种意义上讲,这是很好的,因为在我们观察和更新同一策略时,将更快地学习该策略。 它收敛非常快。 它也有一些缺点,即所学习的策略和用于决策的策略彼此紧密地联系在一起。 如果我们想要一个更具探索性的策略,以便在*步骤 6* 中选择观察结果,并在*步骤 8* 中更新更优化的策略,该怎么办? 这样的算法被称为非策略算法。
这里要注意的一件事是,我们将使用相同的 epsilon-greedy 策略在“步骤 6”中选择动作,并在“步骤 8”中更新相同的策略。 这种算法称为策略上算法。 从某种意义上讲,这是很好的,因为在我们观察和更新同一策略时,将更快地学习该策略。 它收敛非常快。 它也有一些缺点,即所学习的策略和用于决策的策略彼此紧密地联系在一起。 如果我们想要一个更具探索性的策略,以便在“步骤 6”中选择观察结果,并在“步骤 8”中更新更优化的策略,该怎么办? 这样的算法被称为非策略算法。
Q 学习是一种非策略算法,因此,在 Q 学习中,我们将有两个策略。 我们用来推断动作的策略将是 epsilon-greedy 策略,并且我们将其称为策略网络。 我们将使用更新步骤更新的网络将是我们的目标网络。 那只能由一个贪婪的策略来控制,这意味着我们将始终选择 epsilon 等于零的最大值。 我们不会对此政策采取随机措施。 我们这样做是为了使我们更快地朝着更高的价值前进。 我们将通过不时复制策略网的权重(例如每隔一集一次)来更新目标网的权重。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册