Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleClas
提交
2823e48b
P
PaddleClas
项目概览
PaddlePaddle
/
PaddleClas
1 年多 前同步成功
通知
115
Star
4999
Fork
1114
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
19
列表
看板
标记
里程碑
合并请求
6
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleClas
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
19
Issue
19
列表
看板
标记
里程碑
合并请求
6
合并请求
6
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
2823e48b
编写于
5月 24, 2023
作者:
G
gaotingquan
提交者:
cuicheng01
5月 26, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix head_init_scale
上级
042d1e7e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
13 addition
and
15 deletion
+13
-15
ppcls/arch/backbone/model_zoo/foundation_vit.py
ppcls/arch/backbone/model_zoo/foundation_vit.py
+13
-15
未找到文件。
ppcls/arch/backbone/model_zoo/foundation_vit.py
浏览文件 @
2823e48b
...
...
@@ -579,7 +579,6 @@ class VisionTransformer(nn.Layer):
_model_diff
=
eval
(
f
'_
{
self
.
model_name
}
_diff'
)
self
.
class_num
=
class_num
self
.
head_init_scale
=
head_init_scale
self
.
return_embed
=
kwargs
.
get
(
'return_embed'
,
True
)
self
.
num_features
=
self
.
embed_dim
=
embed_dim
_img_size
=
to_2tuple
(
img_size
)
...
...
@@ -647,8 +646,21 @@ class VisionTransformer(nn.Layer):
trunc_normal_
(
self
.
pos_embed
)
if
not
_model_size
in
_model_diff
[
'remove_cls_token'
]:
trunc_normal_
(
self
.
cls_token
)
self
.
apply
(
self
.
_init_weights
)
if
head_init_scale
!=
1
:
if
not
self
.
return_embed
and
class_num
>
0
:
self
.
head
.
fc_head
.
weight
.
set_value
(
self
.
head
.
fc_head
.
weight
*
paddle
.
to_tensor
(
head_init_scale
))
self
.
head
.
fc_head
.
bias
.
set_value
(
self
.
head
.
fc_head
.
bias
*
paddle
.
to_tensor
(
head_init_scale
))
else
:
logger
.
warning
(
"Because the head or head.fc_head of ViT is Identity() class, the argument head_init_scale is invalid."
)
def
_init_weights
(
self
,
m
):
if
isinstance
(
m
,
nn
.
Linear
):
trunc_normal_
(
m
.
weight
)
...
...
@@ -658,20 +670,6 @@ class VisionTransformer(nn.Layer):
zeros_
(
m
.
bias
)
ones_
(
m
.
weight
)
if
self
.
head_init_scale
!=
1
:
if
isinstance
(
self
.
head
,
Head
)
and
isinstance
(
self
.
head
.
fc_head
,
nn
.
Linear
):
paddle
.
assign
(
self
.
head
.
fc_head
.
weight
*
paddle
.
to_tensor
(
self
.
head_init_scale
),
self
.
head
.
fc_head
.
weight
)
paddle
.
assign
(
self
.
head
.
fc_head
.
bias
*
paddle
.
to_tensor
(
self
.
head_init_scale
),
self
.
head
.
fc_head
.
bias
)
else
:
logger
.
warning
(
"Because the head or head.fc_head of ViT is Identity() class, the argument head_init_scale is invalid."
)
def
get_num_layers
(
self
):
return
len
(
self
.
blocks
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录