Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Pytorch Widedeep
提交
a30f3164
P
Pytorch Widedeep
项目概览
Greenplum
/
Pytorch Widedeep
大约 1 年 前同步成功
通知
9
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Pytorch Widedeep
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a30f3164
编写于
10月 02, 2019
作者:
J
jrzaurin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
adapting the code to the cases where the input classes are not instantiated
上级
30dc5289
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
28 addition
and
22 deletion
+28
-22
pytorch_widedeep/initializers.py
pytorch_widedeep/initializers.py
+10
-10
pytorch_widedeep/lr_schedulers.py
pytorch_widedeep/lr_schedulers.py
+7
-3
pytorch_widedeep/optimizers.py
pytorch_widedeep/optimizers.py
+11
-9
未找到文件。
pytorch_widedeep/initializers.py
浏览文件 @
a30f3164
...
...
@@ -7,7 +7,7 @@ from .wdtypes import *
class
Initializer
(
object
):
def
__call__
(
self
,
model
:
nn
.
Module
):
def
__call__
(
self
,
model
:
TorchModel
):
raise
NotImplementedError
(
'Initializer must implement this method'
)
...
...
@@ -16,7 +16,7 @@ class MultipleInitializers(object):
def
__init__
(
self
,
initializers
:
Dict
[
str
,
Initializer
]):
self
.
_initializers
=
initializers
def
apply
(
self
,
model
:
nn
.
Module
):
def
apply
(
self
,
model
:
TorchModel
):
children
=
list
(
model
.
children
())
for
child
in
children
:
model_name
=
child
.
__class__
.
__name__
.
lower
()
...
...
@@ -35,7 +35,7 @@ class Normal(Initializer):
self
.
pattern
=
pattern
super
(
Normal
,
self
).
__init__
()
def
__call__
(
self
,
submodel
:
nn
.
Module
):
def
__call__
(
self
,
submodel
:
TorchModel
):
for
n
,
p
in
submodel
.
named_parameters
():
if
fnmatch
(
n
,
self
.
pattern
)
and
pattern_in
:
if
self
.
bias
and
(
'bias'
in
n
):
...
...
@@ -55,7 +55,7 @@ class Uniform(Initializer):
self
.
pattern
=
pattern
super
(
Uniform
,
self
).
__init__
()
def
__call__
(
self
,
submodel
:
nn
.
Module
):
def
__call__
(
self
,
submodel
:
TorchModel
):
for
n
,
p
in
submodel
.
named_parameters
():
if
fnmatch
(
n
,
self
.
pattern
)
and
pattern_in
:
if
self
.
bias
and
(
'bias'
in
n
):
...
...
@@ -74,7 +74,7 @@ class ConstantInitializer(Initializer):
self
.
pattern
=
pattern
super
(
ConstantInitializer
,
self
).
__init__
()
def
__call__
(
self
,
submodel
:
nn
.
Module
):
def
__call__
(
self
,
submodel
:
TorchModel
):
for
n
,
p
in
submodel
.
named_parameters
():
if
fnmatch
(
n
,
self
.
pattern
)
and
pattern_in
:
if
self
.
bias
and
(
'bias'
in
n
):
...
...
@@ -92,7 +92,7 @@ class XavierUniform(Initializer):
self
.
pattern
=
pattern
super
(
XavierUniform
,
self
).
__init__
()
def
__call__
(
self
,
submodel
:
nn
.
Module
):
def
__call__
(
self
,
submodel
:
TorchModel
):
for
n
,
p
in
submodel
.
named_parameters
():
if
fnmatch
(
n
,
self
.
pattern
)
and
pattern_in
:
if
'bias'
in
n
:
nn
.
init
.
constant_
(
p
,
val
=
0
)
...
...
@@ -106,7 +106,7 @@ class XavierNormal(Initializer):
self
.
pattern
=
pattern
super
(
XavierNormal
,
self
).
__init__
()
def
__call__
(
self
,
submodel
:
nn
.
Module
):
def
__call__
(
self
,
submodel
:
TorchModel
):
for
n
,
p
in
submodel
.
named_parameters
():
if
fnmatch
(
n
,
self
.
pattern
)
and
pattern_in
:
if
'bias'
in
n
:
nn
.
init
.
constant_
(
p
,
val
=
0
)
...
...
@@ -121,7 +121,7 @@ class KaimingUniform(Initializer):
self
.
pattern
=
pattern
super
(
KaimingUniform
,
self
).
__init__
()
def
__call__
(
self
,
submodel
:
nn
.
Module
):
def
__call__
(
self
,
submodel
:
TorchModel
):
for
n
,
p
in
submodel
.
named_parameters
():
if
fnmatch
(
n
,
self
.
pattern
)
and
pattern_in
:
if
'bias'
in
n
:
nn
.
init
.
constant_
(
p
,
val
=
0
)
...
...
@@ -136,7 +136,7 @@ class KaimingNormal(Initializer):
self
.
pattern
=
pattern
super
(
KaimingNormal
,
self
).
__init__
()
def
__call__
(
self
,
submodel
:
nn
.
Module
):
def
__call__
(
self
,
submodel
:
TorchModel
):
for
n
,
p
in
submodel
.
named_parameters
():
if
fnmatch
(
n
,
self
.
pattern
)
and
pattern_in
:
if
'bias'
in
n
:
nn
.
init
.
constant_
(
p
,
val
=
0
)
...
...
@@ -150,7 +150,7 @@ class Orthogonal(Initializer):
self
.
pattern
=
pattern
super
(
Orthogonal
,
self
).
__init__
()
def
__call__
(
self
,
submodel
:
nn
.
Module
):
def
__call__
(
self
,
submodel
:
TorchModel
):
for
n
,
p
in
submodel
.
named_parameters
():
if
fnmatch
(
n
,
self
.
pattern
)
and
pattern_in
:
if
'bias'
in
n
:
nn
.
init
.
normal_
(
p
,
val
=
0
)
...
...
pytorch_widedeep/lr_schedulers.py
浏览文件 @
a30f3164
...
...
@@ -7,12 +7,16 @@ from .wdtypes import *
class
MultipleLRScheduler
(
object
):
def
__init__
(
self
,
schedulers
:
Dict
[
str
,
LRScheduler
]):
self
.
_schedulers
=
schedulers
instantiated_schedulers
=
{}
for
model_name
,
scheduler
in
schedulers
.
items
():
if
isinstance
(
scheduler
,
type
):
instantiated_schedulers
[
model_name
]
=
scheduler
()
else
:
instantiated_schedulers
[
model_name
]
=
scheduler
self
.
_schedulers
=
instantiated_schedulers
def
apply
(
self
,
optimizers
:
Dict
[
str
,
Optimizer
]):
for
model_name
,
optimizer
in
optimizers
.
items
():
if
isinstance
(
self
.
_schedulers
[
model_name
],
type
):
self
.
_schedulers
[
model_name
]
=
self
.
_schedulers
[
model_name
]()
self
.
_schedulers
[
model_name
]
=
self
.
_schedulers
[
model_name
](
optimizer
)
def
step
(
self
,
loss
=
None
):
...
...
pytorch_widedeep/optimizers.py
浏览文件 @
a30f3164
...
...
@@ -4,20 +4,22 @@ from torch import nn
from
.radam
import
RAdam
as
orgRAdam
from
.wdtypes
import
*
import
pdb
class
MultipleOptimizers
(
object
):
def
__init__
(
self
,
optimizers
:
Dict
[
str
,
Optimizer
]):
self
.
_optimizers
=
optimizers
def
apply
(
self
,
model
:
nn
.
Module
):
instantiated_optimizers
=
{}
for
model_name
,
optimizer
in
optimizers
.
items
():
if
isinstance
(
optimizer
,
type
):
instantiated_optimizers
[
model_name
]
=
optimizer
()
else
:
instantiated_optimizers
[
model_name
]
=
optimizer
self
.
_optimizers
=
instantiated_optimizers
def
apply
(
self
,
model
:
TorchModel
):
children
=
list
(
model
.
children
())
for
child
in
children
:
model_name
=
child
.
__class__
.
__name__
.
lower
()
if
isinstance
(
self
.
_optimizers
[
model_name
],
type
):
self
.
_optimizers
[
model_name
]
=
self
.
_optimizers
[
model_name
]()
self
.
_optimizers
[
model_name
]
=
self
.
_optimizers
[
model_name
](
child
)
def
zero_grad
(
self
):
...
...
@@ -39,7 +41,7 @@ class Adam:
self
.
weight_decay
=
weight_decay
self
.
amsgrad
=
amsgrad
def
__call__
(
self
,
submodel
:
nn
.
Module
)
:
def
__call__
(
self
,
submodel
:
TorchModel
)
->
Optimizer
:
self
.
opt
=
torch
.
optim
.
Adam
(
submodel
.
parameters
(),
lr
=
self
.
lr
,
betas
=
self
.
betas
,
eps
=
self
.
eps
,
weight_decay
=
self
.
weight_decay
,
amsgrad
=
self
.
amsgrad
)
return
self
.
opt
...
...
@@ -59,7 +61,7 @@ class RAdam:
self
.
eps
=
eps
self
.
weight_decay
=
weight_decay
def
__call__
(
self
,
submodel
:
nn
.
Module
)
:
def
__call__
(
self
,
submodel
:
TorchModel
)
->
Optimizer
:
self
.
opt
=
orgRAdam
(
submodel
.
parameters
(),
lr
=
self
.
lr
,
betas
=
self
.
betas
,
eps
=
self
.
eps
,
weight_decay
=
self
.
weight_decay
)
return
self
.
opt
...
...
@@ -81,7 +83,7 @@ class SGD:
self
.
weight_decay
=
weight_decay
self
.
nesterov
=
nesterov
def
__call__
(
self
,
submodel
:
nn
.
Module
)
:
def
__call__
(
self
,
submodel
:
TorchModel
)
->
Optimizer
:
self
.
opt
=
torch
.
optim
.
SGD
(
submodel
.
parameters
(),
lr
=
self
.
lr
,
momentum
=
self
.
momentum
,
dampening
=
self
.
dampening
,
weight_decay
=
self
.
weight_decay
,
nesterov
=
self
.
nesterov
)
return
self
.
opt
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录