lanzhiwang commited on
Commit
d5bdfe9
1 Parent(s): 164ce9d
Files changed (3) hide show
  1. 01.ipynb +0 -0
  2. app.py +11 -1
  3. 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
- transformers[sentencepiece]
 
 
1
  streamlit
2
  torch
3
  transformers
4
+ sentencepiece
5
+ # transformers[sentencepiece]