Spaces:
Runtime error
Runtime error
lanzhiwang
commited on
Commit
•
d5bdfe9
1
Parent(s):
164ce9d
test
Browse files- 01.ipynb +0 -0
- app.py +11 -1
- requirements.txt +2 -1
01.ipynb
ADDED
The diff for this file is too large to render.
See raw diff
|
|
app.py
CHANGED
@@ -1,7 +1,6 @@
|
|
1 |
import streamlit as st
|
2 |
from transformers import M2M100Tokenizer, M2M100ForConditionalGeneration
|
3 |
import time
|
4 |
-
from typing import List
|
5 |
import torch
|
6 |
import logging
|
7 |
|
@@ -126,6 +125,17 @@ def load_model(
|
|
126 |
model = M2M100ForConditionalGeneration.from_pretrained(
|
127 |
pretrained_model, cache_dir=cache_dir
|
128 |
).to(device)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
129 |
model.eval()
|
130 |
return tokenizer, model
|
131 |
|
|
|
1 |
import streamlit as st
|
2 |
from transformers import M2M100Tokenizer, M2M100ForConditionalGeneration
|
3 |
import time
|
|
|
4 |
import torch
|
5 |
import logging
|
6 |
|
|
|
125 |
model = M2M100ForConditionalGeneration.from_pretrained(
|
126 |
pretrained_model, cache_dir=cache_dir
|
127 |
).to(device)
|
128 |
+
"""
|
129 |
+
在PyTorch中,`model.eval()`是用来将模型设置为评估(evaluation)模式的方法。在深度学习中,训练和评估两个阶段的模型行为可能会有所不同。以下是`model.eval()`的主要作用:
|
130 |
+
|
131 |
+
1. **Batch Normalization和Dropout的影响:**
|
132 |
+
- 在训练阶段,`Batch Normalization`和`Dropout`等层的行为通常是不同的。在训练时,`Batch Normalization`使用批次统计信息来规范化输入,而`Dropout`层会随机丢弃一些神经元。在评估阶段,我们通常希望使用整个数据集的统计信息来规范化,而不是每个批次的统计信息,并且不再需要随机丢弃神经元。因此,通过执行`model.eval()`,模型会切换到评估模式,从而确保这些层的行为在评估时是正确的。
|
133 |
+
|
134 |
+
2. **梯度计算的关闭:**
|
135 |
+
- 在评估模式下,PyTorch会关闭自动求导(autograd)的计算图,这样可以避免不必要的梯度计算和内存消耗。在训练时,我们通常需要计算梯度以进行反向传播和参数更新,而在评估时,我们只对模型的前向传播感兴趣,因此关闭梯度计算可以提高评估的速度和减少内存使用。
|
136 |
+
|
137 |
+
总的来说,执行`model.eval()`是为了确保在评估阶段模型的行为和性能是正确的,并且可以提高评估时的效率。
|
138 |
+
"""
|
139 |
model.eval()
|
140 |
return tokenizer, model
|
141 |
|
requirements.txt
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
streamlit
|
2 |
torch
|
3 |
transformers
|
4 |
-
|
|
|
|
1 |
streamlit
|
2 |
torch
|
3 |
transformers
|
4 |
+
sentencepiece
|
5 |
+
# transformers[sentencepiece]
|