Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
GoAI
attention_ocr.pytorch
提交
68f97869
A
attention_ocr.pytorch
项目概览
GoAI
/
attention_ocr.pytorch
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
attention_ocr.pytorch
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
68f97869
编写于
10月 15, 2017
作者:
X
xiaohang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
the optimized Attention reduce the time from 900 to 65
上级
f31b54e2
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
14 addition
and
11 deletion
+14
-11
models/crnn.py
models/crnn.py
+14
-11
未找到文件。
models/crnn.py
浏览文件 @
68f97869
...
...
@@ -35,7 +35,6 @@ class AttentionCell(nn.Module):
def
forward
(
self
,
prev_hidden
,
feats
):
nT
=
feats
.
size
(
0
)
nB
=
feats
.
size
(
1
)
assert
(
nB
==
1
)
nC
=
feats
.
size
(
2
)
hidden_size
=
self
.
hidden_size
input_size
=
self
.
input_size
...
...
@@ -65,18 +64,22 @@ class Attention(nn.Module):
assert
(
input_size
==
nC
)
assert
(
nB
==
text_length
.
numel
())
num_steps
=
text_length
.
data
.
max
()
num_labels
=
text_length
.
data
.
sum
()
output_hiddens
=
Variable
(
torch
.
zeros
(
num_labels
,
hidden_size
).
type_as
(
feats
.
data
))
k
=
0
for
j
in
range
(
nB
):
sub_feats
=
feats
[:,
j
,:].
contiguous
().
view
(
nT
,
1
,
nC
)
#feats.index_select(1, Variable(torch.LongTensor([j]).type_as(feats.data)))
sub_hidden
=
Variable
(
torch
.
zeros
(
1
,
hidden_size
).
type_as
(
feats
.
data
))
for
i
in
range
(
text_length
.
data
[
j
]):
sub_hidden
,
sub_alpha
=
self
.
attention_cell
(
sub_hidden
,
sub_feats
)
output_hiddens
[
k
]
=
sub_hidden
.
view
(
-
1
)
k
=
k
+
1
probs
=
self
.
generator
(
output_hiddens
)
output_hiddens
=
Variable
(
torch
.
zeros
(
num_steps
,
nB
,
hidden_size
).
type_as
(
feats
.
data
))
hidden
=
Variable
(
torch
.
zeros
(
nB
,
hidden_size
).
type_as
(
feats
.
data
))
for
i
in
range
(
num_steps
):
hidden
,
alpha
=
self
.
attention_cell
(
hidden
,
feats
)
output_hiddens
[
i
]
=
hidden
new_hiddens
=
Variable
(
torch
.
zeros
(
num_labels
,
hidden_size
).
type_as
(
feats
.
data
))
b
=
0
start
=
0
for
length
in
text_length
.
data
:
new_hiddens
[
start
:
start
+
length
]
=
output_hiddens
[
0
:
length
,
b
,:]
start
=
start
+
length
b
=
b
+
1
probs
=
self
.
generator
(
new_hiddens
)
return
probs
class
CRNN
(
nn
.
Module
):
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录