Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
F
Fairseq-S2T
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
xuchen
Fairseq-S2T
Commits
b78c7894
Commit
b78c7894
authored
Mar 30, 2021
by
xuchen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
support the pre-trained models
parent
ea1870e5
显示空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
50 行增加
和
5 行删除
+50
-5
fairseq/checkpoint_utils.py
+41
-2
fairseq/models/speech_to_text/s2t_conformer.py
+1
-1
fairseq/models/speech_to_text/s2t_transformer.py
+8
-2
没有找到文件。
fairseq/checkpoint_utils.py
查看文件 @
b78c7894
...
@@ -658,7 +658,7 @@ def prune_state_dict(state_dict, model_cfg: Optional[DictConfig]):
...
@@ -658,7 +658,7 @@ def prune_state_dict(state_dict, model_cfg: Optional[DictConfig]):
def
load_pretrained_component_from_model
(
def
load_pretrained_component_from_model
(
component
:
Union
[
FairseqEncoder
,
FairseqDecoder
],
checkpoint
:
str
component
:
Union
[
FairseqEncoder
,
FairseqDecoder
],
checkpoint
:
str
,
strict
:
bool
=
True
,
):
):
"""
"""
Load a pretrained FairseqEncoder or FairseqDecoder from checkpoint into the
Load a pretrained FairseqEncoder or FairseqDecoder from checkpoint into the
...
@@ -684,7 +684,46 @@ def load_pretrained_component_from_model(
...
@@ -684,7 +684,46 @@ def load_pretrained_component_from_model(
# encoder.input_layers.0.0.weight --> input_layers.0.0.weight
# encoder.input_layers.0.0.weight --> input_layers.0.0.weight
component_subkey
=
key
[
len
(
component_type
)
+
1
:]
component_subkey
=
key
[
len
(
component_type
)
+
1
:]
component_state_dict
[
component_subkey
]
=
state
[
"model"
][
key
]
component_state_dict
[
component_subkey
]
=
state
[
"model"
][
key
]
component
.
load_state_dict
(
component_state_dict
,
strict
=
True
)
mismatch_keys
=
[]
if
not
strict
:
def
check
(
load_state_dict
,
modules
,
prefix
=
''
):
for
name
,
param
in
modules
.
_parameters
.
items
():
key
=
prefix
+
name
if
key
in
load_state_dict
:
load_param
=
load_state_dict
[
key
]
if
load_param
.
shape
!=
param
.
shape
:
mismatch_keys
.
append
(
key
)
for
name
,
child
in
modules
.
_modules
.
items
():
check
(
load_state_dict
,
child
,
name
+
prefix
+
"."
)
check
(
component_state_dict
,
component
)
# parameters = component.named_parameters()
# for key, tensor in parameters:
# if key in component_state_dict and tensor.shape != component_state_dict[key].shape:
# mismatch_keys.append(key)
for
key
in
mismatch_keys
:
del
component_state_dict
[
key
]
missing_keys
,
unexpected_keys
=
component
.
load_state_dict
(
component_state_dict
,
strict
=
strict
)
if
len
(
unexpected_keys
)
>
0
:
logger
.
warning
(
'Unexpected key(s) in state_dict: {}. '
.
format
(
', '
.
join
(
'"{}"'
.
format
(
k
)
for
k
in
unexpected_keys
)))
if
len
(
missing_keys
)
>
0
:
logger
.
warning
(
'Missing key(s) in state_dict: {}. '
.
format
(
', '
.
join
(
'"{}"'
.
format
(
k
)
for
k
in
missing_keys
)))
if
len
(
mismatch_keys
)
>
0
:
logger
.
warning
(
'Mismatch key(s) in state_dict: {}. '
.
format
(
', '
.
join
(
'"{}"'
.
format
(
k
)
for
k
in
mismatch_keys
)))
return
component
return
component
...
...
fairseq/models/speech_to_text/s2t_conformer.py
查看文件 @
b78c7894
...
@@ -76,7 +76,7 @@ class S2TConformerModel(S2TTransformerModel):
...
@@ -76,7 +76,7 @@ class S2TConformerModel(S2TTransformerModel):
encoder
=
S2TConformerEncoder
(
args
,
task
,
embed_tokens
)
encoder
=
S2TConformerEncoder
(
args
,
task
,
embed_tokens
)
if
getattr
(
args
,
"load_pretrained_encoder_from"
,
None
):
if
getattr
(
args
,
"load_pretrained_encoder_from"
,
None
):
encoder
=
checkpoint_utils
.
load_pretrained_component_from_model
(
encoder
=
checkpoint_utils
.
load_pretrained_component_from_model
(
component
=
encoder
,
checkpoint
=
args
.
load_pretrained_encoder_from
component
=
encoder
,
checkpoint
=
args
.
load_pretrained_encoder_from
,
strict
=
False
)
)
logger
.
info
(
logger
.
info
(
f
"loaded pretrained encoder from: "
f
"loaded pretrained encoder from: "
...
...
fairseq/models/speech_to_text/s2t_transformer.py
查看文件 @
b78c7894
...
@@ -223,6 +223,12 @@ class S2TTransformerModel(FairseqEncoderDecoderModel):
...
@@ -223,6 +223,12 @@ class S2TTransformerModel(FairseqEncoderDecoderModel):
metavar
=
"STR"
,
metavar
=
"STR"
,
help
=
"model to take encoder weights from (for initialization)"
,
help
=
"model to take encoder weights from (for initialization)"
,
)
)
parser
.
add_argument
(
"--load-pretrained-decoder-from"
,
type
=
str
,
metavar
=
"STR"
,
help
=
"model to take decoder weights from (for initialization)"
,
)
pass
pass
@classmethod
@classmethod
...
@@ -230,7 +236,7 @@ class S2TTransformerModel(FairseqEncoderDecoderModel):
...
@@ -230,7 +236,7 @@ class S2TTransformerModel(FairseqEncoderDecoderModel):
encoder
=
S2TTransformerEncoder
(
args
,
task
,
embed_tokens
)
encoder
=
S2TTransformerEncoder
(
args
,
task
,
embed_tokens
)
if
getattr
(
args
,
"load_pretrained_encoder_from"
,
None
):
if
getattr
(
args
,
"load_pretrained_encoder_from"
,
None
):
encoder
=
checkpoint_utils
.
load_pretrained_component_from_model
(
encoder
=
checkpoint_utils
.
load_pretrained_component_from_model
(
component
=
encoder
,
checkpoint
=
args
.
load_pretrained_encoder_from
component
=
encoder
,
checkpoint
=
args
.
load_pretrained_encoder_from
,
strict
=
False
)
)
logger
.
info
(
logger
.
info
(
f
"loaded pretrained encoder from: "
f
"loaded pretrained encoder from: "
...
@@ -243,7 +249,7 @@ class S2TTransformerModel(FairseqEncoderDecoderModel):
...
@@ -243,7 +249,7 @@ class S2TTransformerModel(FairseqEncoderDecoderModel):
decoder
=
TransformerDecoderScriptable
(
args
,
task
.
target_dictionary
,
embed_tokens
)
decoder
=
TransformerDecoderScriptable
(
args
,
task
.
target_dictionary
,
embed_tokens
)
if
getattr
(
args
,
"load_pretrained_decoder_from"
,
None
):
if
getattr
(
args
,
"load_pretrained_decoder_from"
,
None
):
decoder
=
checkpoint_utils
.
load_pretrained_component_from_model
(
decoder
=
checkpoint_utils
.
load_pretrained_component_from_model
(
component
=
decoder
,
checkpoint
=
args
.
load_pretrained_encoder_from
component
=
decoder
,
checkpoint
=
args
.
load_pretrained_encoder_from
,
strict
=
False
)
)
logger
.
info
(
logger
.
info
(
f
"loaded pretrained decoder from: "
f
"loaded pretrained decoder from: "
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论