resnext_101_32x4d.py 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686
  1. import torch
  2. import torch.nn as nn
  3. from torch.autograd import Variable
  4. from functools import reduce
  5. class LambdaBase(nn.Sequential):
  6. def __init__(self, fn, *args):
  7. super(LambdaBase, self).__init__(*args)
  8. self.lambda_func = fn
  9. def forward_prepare(self, input):
  10. output = []
  11. for module in self._modules.values():
  12. output.append(module(input))
  13. return output if output else input
  14. class Lambda(LambdaBase):
  15. def forward(self, input):
  16. return self.lambda_func(self.forward_prepare(input))
  17. class LambdaMap(LambdaBase):
  18. def forward(self, input):
  19. return list(map(self.lambda_func,self.forward_prepare(input)))
  20. class LambdaReduce(LambdaBase):
  21. def forward(self, input):
  22. return reduce(self.lambda_func,self.forward_prepare(input))
  23. def resnext_101_32x4d(): return nn.Sequential( # Sequential,
  24. nn.Conv2d(3,64,(7, 7),(2, 2),(3, 3),1,1,bias=False),
  25. nn.BatchNorm2d(64),
  26. nn.ReLU(),
  27. nn.MaxPool2d((3, 3),(2, 2),(1, 1)),
  28. nn.Sequential( # Sequential,
  29. nn.Sequential( # Sequential,
  30. LambdaMap(lambda x: x, # ConcatTable,
  31. nn.Sequential( # Sequential,
  32. nn.Sequential( # Sequential,
  33. nn.Conv2d(64,128,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  34. nn.BatchNorm2d(128),
  35. nn.ReLU(),
  36. nn.Conv2d(128,128,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  37. nn.BatchNorm2d(128),
  38. nn.ReLU(),
  39. ),
  40. nn.Conv2d(128,256,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  41. nn.BatchNorm2d(256),
  42. ),
  43. nn.Sequential( # Sequential,
  44. nn.Conv2d(64,256,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  45. nn.BatchNorm2d(256),
  46. ),
  47. ),
  48. LambdaReduce(lambda x,y: x+y), # CAddTable,
  49. nn.ReLU(),
  50. ),
  51. nn.Sequential( # Sequential,
  52. LambdaMap(lambda x: x, # ConcatTable,
  53. nn.Sequential( # Sequential,
  54. nn.Sequential( # Sequential,
  55. nn.Conv2d(256,128,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  56. nn.BatchNorm2d(128),
  57. nn.ReLU(),
  58. nn.Conv2d(128,128,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  59. nn.BatchNorm2d(128),
  60. nn.ReLU(),
  61. ),
  62. nn.Conv2d(128,256,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  63. nn.BatchNorm2d(256),
  64. ),
  65. Lambda(lambda x: x), # Identity,
  66. ),
  67. LambdaReduce(lambda x,y: x+y), # CAddTable,
  68. nn.ReLU(),
  69. ),
  70. nn.Sequential( # Sequential,
  71. LambdaMap(lambda x: x, # ConcatTable,
  72. nn.Sequential( # Sequential,
  73. nn.Sequential( # Sequential,
  74. nn.Conv2d(256,128,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  75. nn.BatchNorm2d(128),
  76. nn.ReLU(),
  77. nn.Conv2d(128,128,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  78. nn.BatchNorm2d(128),
  79. nn.ReLU(),
  80. ),
  81. nn.Conv2d(128,256,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  82. nn.BatchNorm2d(256),
  83. ),
  84. Lambda(lambda x: x), # Identity,
  85. ),
  86. LambdaReduce(lambda x,y: x+y), # CAddTable,
  87. nn.ReLU(),
  88. ),
  89. ),
  90. nn.Sequential( # Sequential,
  91. nn.Sequential( # Sequential,
  92. LambdaMap(lambda x: x, # ConcatTable,
  93. nn.Sequential( # Sequential,
  94. nn.Sequential( # Sequential,
  95. nn.Conv2d(256,256,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  96. nn.BatchNorm2d(256),
  97. nn.ReLU(),
  98. nn.Conv2d(256,256,(3, 3),(2, 2),(1, 1),1,32,bias=False),
  99. nn.BatchNorm2d(256),
  100. nn.ReLU(),
  101. ),
  102. nn.Conv2d(256,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  103. nn.BatchNorm2d(512),
  104. ),
  105. nn.Sequential( # Sequential,
  106. nn.Conv2d(256,512,(1, 1),(2, 2),(0, 0),1,1,bias=False),
  107. nn.BatchNorm2d(512),
  108. ),
  109. ),
  110. LambdaReduce(lambda x,y: x+y), # CAddTable,
  111. nn.ReLU(),
  112. ),
  113. nn.Sequential( # Sequential,
  114. LambdaMap(lambda x: x, # ConcatTable,
  115. nn.Sequential( # Sequential,
  116. nn.Sequential( # Sequential,
  117. nn.Conv2d(512,256,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  118. nn.BatchNorm2d(256),
  119. nn.ReLU(),
  120. nn.Conv2d(256,256,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  121. nn.BatchNorm2d(256),
  122. nn.ReLU(),
  123. ),
  124. nn.Conv2d(256,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  125. nn.BatchNorm2d(512),
  126. ),
  127. Lambda(lambda x: x), # Identity,
  128. ),
  129. LambdaReduce(lambda x,y: x+y), # CAddTable,
  130. nn.ReLU(),
  131. ),
  132. nn.Sequential( # Sequential,
  133. LambdaMap(lambda x: x, # ConcatTable,
  134. nn.Sequential( # Sequential,
  135. nn.Sequential( # Sequential,
  136. nn.Conv2d(512,256,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  137. nn.BatchNorm2d(256),
  138. nn.ReLU(),
  139. nn.Conv2d(256,256,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  140. nn.BatchNorm2d(256),
  141. nn.ReLU(),
  142. ),
  143. nn.Conv2d(256,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  144. nn.BatchNorm2d(512),
  145. ),
  146. Lambda(lambda x: x), # Identity,
  147. ),
  148. LambdaReduce(lambda x,y: x+y), # CAddTable,
  149. nn.ReLU(),
  150. ),
  151. nn.Sequential( # Sequential,
  152. LambdaMap(lambda x: x, # ConcatTable,
  153. nn.Sequential( # Sequential,
  154. nn.Sequential( # Sequential,
  155. nn.Conv2d(512,256,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  156. nn.BatchNorm2d(256),
  157. nn.ReLU(),
  158. nn.Conv2d(256,256,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  159. nn.BatchNorm2d(256),
  160. nn.ReLU(),
  161. ),
  162. nn.Conv2d(256,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  163. nn.BatchNorm2d(512),
  164. ),
  165. Lambda(lambda x: x), # Identity,
  166. ),
  167. LambdaReduce(lambda x,y: x+y), # CAddTable,
  168. nn.ReLU(),
  169. ),
  170. ),
  171. nn.Sequential( # Sequential,
  172. nn.Sequential( # Sequential,
  173. LambdaMap(lambda x: x, # ConcatTable,
  174. nn.Sequential( # Sequential,
  175. nn.Sequential( # Sequential,
  176. nn.Conv2d(512,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  177. nn.BatchNorm2d(512),
  178. nn.ReLU(),
  179. nn.Conv2d(512,512,(3, 3),(2, 2),(1, 1),1,32,bias=False),
  180. nn.BatchNorm2d(512),
  181. nn.ReLU(),
  182. ),
  183. nn.Conv2d(512,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  184. nn.BatchNorm2d(1024),
  185. ),
  186. nn.Sequential( # Sequential,
  187. nn.Conv2d(512,1024,(1, 1),(2, 2),(0, 0),1,1,bias=False),
  188. nn.BatchNorm2d(1024),
  189. ),
  190. ),
  191. LambdaReduce(lambda x,y: x+y), # CAddTable,
  192. nn.ReLU(),
  193. ),
  194. nn.Sequential( # Sequential,
  195. LambdaMap(lambda x: x, # ConcatTable,
  196. nn.Sequential( # Sequential,
  197. nn.Sequential( # Sequential,
  198. nn.Conv2d(1024,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  199. nn.BatchNorm2d(512),
  200. nn.ReLU(),
  201. nn.Conv2d(512,512,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  202. nn.BatchNorm2d(512),
  203. nn.ReLU(),
  204. ),
  205. nn.Conv2d(512,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  206. nn.BatchNorm2d(1024),
  207. ),
  208. Lambda(lambda x: x), # Identity,
  209. ),
  210. LambdaReduce(lambda x,y: x+y), # CAddTable,
  211. nn.ReLU(),
  212. ),
  213. nn.Sequential( # Sequential,
  214. LambdaMap(lambda x: x, # ConcatTable,
  215. nn.Sequential( # Sequential,
  216. nn.Sequential( # Sequential,
  217. nn.Conv2d(1024,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  218. nn.BatchNorm2d(512),
  219. nn.ReLU(),
  220. nn.Conv2d(512,512,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  221. nn.BatchNorm2d(512),
  222. nn.ReLU(),
  223. ),
  224. nn.Conv2d(512,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  225. nn.BatchNorm2d(1024),
  226. ),
  227. Lambda(lambda x: x), # Identity,
  228. ),
  229. LambdaReduce(lambda x,y: x+y), # CAddTable,
  230. nn.ReLU(),
  231. ),
  232. nn.Sequential( # Sequential,
  233. LambdaMap(lambda x: x, # ConcatTable,
  234. nn.Sequential( # Sequential,
  235. nn.Sequential( # Sequential,
  236. nn.Conv2d(1024,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  237. nn.BatchNorm2d(512),
  238. nn.ReLU(),
  239. nn.Conv2d(512,512,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  240. nn.BatchNorm2d(512),
  241. nn.ReLU(),
  242. ),
  243. nn.Conv2d(512,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  244. nn.BatchNorm2d(1024),
  245. ),
  246. Lambda(lambda x: x), # Identity,
  247. ),
  248. LambdaReduce(lambda x,y: x+y), # CAddTable,
  249. nn.ReLU(),
  250. ),
  251. nn.Sequential( # Sequential,
  252. LambdaMap(lambda x: x, # ConcatTable,
  253. nn.Sequential( # Sequential,
  254. nn.Sequential( # Sequential,
  255. nn.Conv2d(1024,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  256. nn.BatchNorm2d(512),
  257. nn.ReLU(),
  258. nn.Conv2d(512,512,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  259. nn.BatchNorm2d(512),
  260. nn.ReLU(),
  261. ),
  262. nn.Conv2d(512,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  263. nn.BatchNorm2d(1024),
  264. ),
  265. Lambda(lambda x: x), # Identity,
  266. ),
  267. LambdaReduce(lambda x,y: x+y), # CAddTable,
  268. nn.ReLU(),
  269. ),
  270. nn.Sequential( # Sequential,
  271. LambdaMap(lambda x: x, # ConcatTable,
  272. nn.Sequential( # Sequential,
  273. nn.Sequential( # Sequential,
  274. nn.Conv2d(1024,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  275. nn.BatchNorm2d(512),
  276. nn.ReLU(),
  277. nn.Conv2d(512,512,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  278. nn.BatchNorm2d(512),
  279. nn.ReLU(),
  280. ),
  281. nn.Conv2d(512,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  282. nn.BatchNorm2d(1024),
  283. ),
  284. Lambda(lambda x: x), # Identity,
  285. ),
  286. LambdaReduce(lambda x,y: x+y), # CAddTable,
  287. nn.ReLU(),
  288. ),
  289. nn.Sequential( # Sequential,
  290. LambdaMap(lambda x: x, # ConcatTable,
  291. nn.Sequential( # Sequential,
  292. nn.Sequential( # Sequential,
  293. nn.Conv2d(1024,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  294. nn.BatchNorm2d(512),
  295. nn.ReLU(),
  296. nn.Conv2d(512,512,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  297. nn.BatchNorm2d(512),
  298. nn.ReLU(),
  299. ),
  300. nn.Conv2d(512,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  301. nn.BatchNorm2d(1024),
  302. ),
  303. Lambda(lambda x: x), # Identity,
  304. ),
  305. LambdaReduce(lambda x,y: x+y), # CAddTable,
  306. nn.ReLU(),
  307. ),
  308. nn.Sequential( # Sequential,
  309. LambdaMap(lambda x: x, # ConcatTable,
  310. nn.Sequential( # Sequential,
  311. nn.Sequential( # Sequential,
  312. nn.Conv2d(1024,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  313. nn.BatchNorm2d(512),
  314. nn.ReLU(),
  315. nn.Conv2d(512,512,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  316. nn.BatchNorm2d(512),
  317. nn.ReLU(),
  318. ),
  319. nn.Conv2d(512,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  320. nn.BatchNorm2d(1024),
  321. ),
  322. Lambda(lambda x: x), # Identity,
  323. ),
  324. LambdaReduce(lambda x,y: x+y), # CAddTable,
  325. nn.ReLU(),
  326. ),
  327. nn.Sequential( # Sequential,
  328. LambdaMap(lambda x: x, # ConcatTable,
  329. nn.Sequential( # Sequential,
  330. nn.Sequential( # Sequential,
  331. nn.Conv2d(1024,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  332. nn.BatchNorm2d(512),
  333. nn.ReLU(),
  334. nn.Conv2d(512,512,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  335. nn.BatchNorm2d(512),
  336. nn.ReLU(),
  337. ),
  338. nn.Conv2d(512,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  339. nn.BatchNorm2d(1024),
  340. ),
  341. Lambda(lambda x: x), # Identity,
  342. ),
  343. LambdaReduce(lambda x,y: x+y), # CAddTable,
  344. nn.ReLU(),
  345. ),
  346. nn.Sequential( # Sequential,
  347. LambdaMap(lambda x: x, # ConcatTable,
  348. nn.Sequential( # Sequential,
  349. nn.Sequential( # Sequential,
  350. nn.Conv2d(1024,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  351. nn.BatchNorm2d(512),
  352. nn.ReLU(),
  353. nn.Conv2d(512,512,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  354. nn.BatchNorm2d(512),
  355. nn.ReLU(),
  356. ),
  357. nn.Conv2d(512,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  358. nn.BatchNorm2d(1024),
  359. ),
  360. Lambda(lambda x: x), # Identity,
  361. ),
  362. LambdaReduce(lambda x,y: x+y), # CAddTable,
  363. nn.ReLU(),
  364. ),
  365. nn.Sequential( # Sequential,
  366. LambdaMap(lambda x: x, # ConcatTable,
  367. nn.Sequential( # Sequential,
  368. nn.Sequential( # Sequential,
  369. nn.Conv2d(1024,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  370. nn.BatchNorm2d(512),
  371. nn.ReLU(),
  372. nn.Conv2d(512,512,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  373. nn.BatchNorm2d(512),
  374. nn.ReLU(),
  375. ),
  376. nn.Conv2d(512,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  377. nn.BatchNorm2d(1024),
  378. ),
  379. Lambda(lambda x: x), # Identity,
  380. ),
  381. LambdaReduce(lambda x,y: x+y), # CAddTable,
  382. nn.ReLU(),
  383. ),
  384. nn.Sequential( # Sequential,
  385. LambdaMap(lambda x: x, # ConcatTable,
  386. nn.Sequential( # Sequential,
  387. nn.Sequential( # Sequential,
  388. nn.Conv2d(1024,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  389. nn.BatchNorm2d(512),
  390. nn.ReLU(),
  391. nn.Conv2d(512,512,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  392. nn.BatchNorm2d(512),
  393. nn.ReLU(),
  394. ),
  395. nn.Conv2d(512,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  396. nn.BatchNorm2d(1024),
  397. ),
  398. Lambda(lambda x: x), # Identity,
  399. ),
  400. LambdaReduce(lambda x,y: x+y), # CAddTable,
  401. nn.ReLU(),
  402. ),
  403. nn.Sequential( # Sequential,
  404. LambdaMap(lambda x: x, # ConcatTable,
  405. nn.Sequential( # Sequential,
  406. nn.Sequential( # Sequential,
  407. nn.Conv2d(1024,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  408. nn.BatchNorm2d(512),
  409. nn.ReLU(),
  410. nn.Conv2d(512,512,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  411. nn.BatchNorm2d(512),
  412. nn.ReLU(),
  413. ),
  414. nn.Conv2d(512,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  415. nn.BatchNorm2d(1024),
  416. ),
  417. Lambda(lambda x: x), # Identity,
  418. ),
  419. LambdaReduce(lambda x,y: x+y), # CAddTable,
  420. nn.ReLU(),
  421. ),
  422. nn.Sequential( # Sequential,
  423. LambdaMap(lambda x: x, # ConcatTable,
  424. nn.Sequential( # Sequential,
  425. nn.Sequential( # Sequential,
  426. nn.Conv2d(1024,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  427. nn.BatchNorm2d(512),
  428. nn.ReLU(),
  429. nn.Conv2d(512,512,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  430. nn.BatchNorm2d(512),
  431. nn.ReLU(),
  432. ),
  433. nn.Conv2d(512,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  434. nn.BatchNorm2d(1024),
  435. ),
  436. Lambda(lambda x: x), # Identity,
  437. ),
  438. LambdaReduce(lambda x,y: x+y), # CAddTable,
  439. nn.ReLU(),
  440. ),
  441. nn.Sequential( # Sequential,
  442. LambdaMap(lambda x: x, # ConcatTable,
  443. nn.Sequential( # Sequential,
  444. nn.Sequential( # Sequential,
  445. nn.Conv2d(1024,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  446. nn.BatchNorm2d(512),
  447. nn.ReLU(),
  448. nn.Conv2d(512,512,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  449. nn.BatchNorm2d(512),
  450. nn.ReLU(),
  451. ),
  452. nn.Conv2d(512,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  453. nn.BatchNorm2d(1024),
  454. ),
  455. Lambda(lambda x: x), # Identity,
  456. ),
  457. LambdaReduce(lambda x,y: x+y), # CAddTable,
  458. nn.ReLU(),
  459. ),
  460. nn.Sequential( # Sequential,
  461. LambdaMap(lambda x: x, # ConcatTable,
  462. nn.Sequential( # Sequential,
  463. nn.Sequential( # Sequential,
  464. nn.Conv2d(1024,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  465. nn.BatchNorm2d(512),
  466. nn.ReLU(),
  467. nn.Conv2d(512,512,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  468. nn.BatchNorm2d(512),
  469. nn.ReLU(),
  470. ),
  471. nn.Conv2d(512,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  472. nn.BatchNorm2d(1024),
  473. ),
  474. Lambda(lambda x: x), # Identity,
  475. ),
  476. LambdaReduce(lambda x,y: x+y), # CAddTable,
  477. nn.ReLU(),
  478. ),
  479. nn.Sequential( # Sequential,
  480. LambdaMap(lambda x: x, # ConcatTable,
  481. nn.Sequential( # Sequential,
  482. nn.Sequential( # Sequential,
  483. nn.Conv2d(1024,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  484. nn.BatchNorm2d(512),
  485. nn.ReLU(),
  486. nn.Conv2d(512,512,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  487. nn.BatchNorm2d(512),
  488. nn.ReLU(),
  489. ),
  490. nn.Conv2d(512,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  491. nn.BatchNorm2d(1024),
  492. ),
  493. Lambda(lambda x: x), # Identity,
  494. ),
  495. LambdaReduce(lambda x,y: x+y), # CAddTable,
  496. nn.ReLU(),
  497. ),
  498. nn.Sequential( # Sequential,
  499. LambdaMap(lambda x: x, # ConcatTable,
  500. nn.Sequential( # Sequential,
  501. nn.Sequential( # Sequential,
  502. nn.Conv2d(1024,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  503. nn.BatchNorm2d(512),
  504. nn.ReLU(),
  505. nn.Conv2d(512,512,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  506. nn.BatchNorm2d(512),
  507. nn.ReLU(),
  508. ),
  509. nn.Conv2d(512,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  510. nn.BatchNorm2d(1024),
  511. ),
  512. Lambda(lambda x: x), # Identity,
  513. ),
  514. LambdaReduce(lambda x,y: x+y), # CAddTable,
  515. nn.ReLU(),
  516. ),
  517. nn.Sequential( # Sequential,
  518. LambdaMap(lambda x: x, # ConcatTable,
  519. nn.Sequential( # Sequential,
  520. nn.Sequential( # Sequential,
  521. nn.Conv2d(1024,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  522. nn.BatchNorm2d(512),
  523. nn.ReLU(),
  524. nn.Conv2d(512,512,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  525. nn.BatchNorm2d(512),
  526. nn.ReLU(),
  527. ),
  528. nn.Conv2d(512,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  529. nn.BatchNorm2d(1024),
  530. ),
  531. Lambda(lambda x: x), # Identity,
  532. ),
  533. LambdaReduce(lambda x,y: x+y), # CAddTable,
  534. nn.ReLU(),
  535. ),
  536. nn.Sequential( # Sequential,
  537. LambdaMap(lambda x: x, # ConcatTable,
  538. nn.Sequential( # Sequential,
  539. nn.Sequential( # Sequential,
  540. nn.Conv2d(1024,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  541. nn.BatchNorm2d(512),
  542. nn.ReLU(),
  543. nn.Conv2d(512,512,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  544. nn.BatchNorm2d(512),
  545. nn.ReLU(),
  546. ),
  547. nn.Conv2d(512,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  548. nn.BatchNorm2d(1024),
  549. ),
  550. Lambda(lambda x: x), # Identity,
  551. ),
  552. LambdaReduce(lambda x,y: x+y), # CAddTable,
  553. nn.ReLU(),
  554. ),
  555. nn.Sequential( # Sequential,
  556. LambdaMap(lambda x: x, # ConcatTable,
  557. nn.Sequential( # Sequential,
  558. nn.Sequential( # Sequential,
  559. nn.Conv2d(1024,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  560. nn.BatchNorm2d(512),
  561. nn.ReLU(),
  562. nn.Conv2d(512,512,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  563. nn.BatchNorm2d(512),
  564. nn.ReLU(),
  565. ),
  566. nn.Conv2d(512,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  567. nn.BatchNorm2d(1024),
  568. ),
  569. Lambda(lambda x: x), # Identity,
  570. ),
  571. LambdaReduce(lambda x,y: x+y), # CAddTable,
  572. nn.ReLU(),
  573. ),
  574. nn.Sequential( # Sequential,
  575. LambdaMap(lambda x: x, # ConcatTable,
  576. nn.Sequential( # Sequential,
  577. nn.Sequential( # Sequential,
  578. nn.Conv2d(1024,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  579. nn.BatchNorm2d(512),
  580. nn.ReLU(),
  581. nn.Conv2d(512,512,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  582. nn.BatchNorm2d(512),
  583. nn.ReLU(),
  584. ),
  585. nn.Conv2d(512,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  586. nn.BatchNorm2d(1024),
  587. ),
  588. Lambda(lambda x: x), # Identity,
  589. ),
  590. LambdaReduce(lambda x,y: x+y), # CAddTable,
  591. nn.ReLU(),
  592. ),
  593. nn.Sequential( # Sequential,
  594. LambdaMap(lambda x: x, # ConcatTable,
  595. nn.Sequential( # Sequential,
  596. nn.Sequential( # Sequential,
  597. nn.Conv2d(1024,512,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  598. nn.BatchNorm2d(512),
  599. nn.ReLU(),
  600. nn.Conv2d(512,512,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  601. nn.BatchNorm2d(512),
  602. nn.ReLU(),
  603. ),
  604. nn.Conv2d(512,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  605. nn.BatchNorm2d(1024),
  606. ),
  607. Lambda(lambda x: x), # Identity,
  608. ),
  609. LambdaReduce(lambda x,y: x+y), # CAddTable,
  610. nn.ReLU(),
  611. ),
  612. ),
  613. nn.Sequential( # Sequential,
  614. nn.Sequential( # Sequential,
  615. LambdaMap(lambda x: x, # ConcatTable,
  616. nn.Sequential( # Sequential,
  617. nn.Sequential( # Sequential,
  618. nn.Conv2d(1024,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  619. nn.BatchNorm2d(1024),
  620. nn.ReLU(),
  621. nn.Conv2d(1024,1024,(3, 3),(2, 2),(1, 1),1,32,bias=False),
  622. nn.BatchNorm2d(1024),
  623. nn.ReLU(),
  624. ),
  625. nn.Conv2d(1024,2048,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  626. nn.BatchNorm2d(2048),
  627. ),
  628. nn.Sequential( # Sequential,
  629. nn.Conv2d(1024,2048,(1, 1),(2, 2),(0, 0),1,1,bias=False),
  630. nn.BatchNorm2d(2048),
  631. ),
  632. ),
  633. LambdaReduce(lambda x,y: x+y), # CAddTable,
  634. nn.ReLU(),
  635. ),
  636. nn.Sequential( # Sequential,
  637. LambdaMap(lambda x: x, # ConcatTable,
  638. nn.Sequential( # Sequential,
  639. nn.Sequential( # Sequential,
  640. nn.Conv2d(2048,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  641. nn.BatchNorm2d(1024),
  642. nn.ReLU(),
  643. nn.Conv2d(1024,1024,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  644. nn.BatchNorm2d(1024),
  645. nn.ReLU(),
  646. ),
  647. nn.Conv2d(1024,2048,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  648. nn.BatchNorm2d(2048),
  649. ),
  650. Lambda(lambda x: x), # Identity,
  651. ),
  652. LambdaReduce(lambda x,y: x+y), # CAddTable,
  653. nn.ReLU(),
  654. ),
  655. nn.Sequential( # Sequential,
  656. LambdaMap(lambda x: x, # ConcatTable,
  657. nn.Sequential( # Sequential,
  658. nn.Sequential( # Sequential,
  659. nn.Conv2d(2048,1024,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  660. nn.BatchNorm2d(1024),
  661. nn.ReLU(),
  662. nn.Conv2d(1024,1024,(3, 3),(1, 1),(1, 1),1,32,bias=False),
  663. nn.BatchNorm2d(1024),
  664. nn.ReLU(),
  665. ),
  666. nn.Conv2d(1024,2048,(1, 1),(1, 1),(0, 0),1,1,bias=False),
  667. nn.BatchNorm2d(2048),
  668. ),
  669. Lambda(lambda x: x), # Identity,
  670. ),
  671. LambdaReduce(lambda x,y: x+y), # CAddTable,
  672. nn.ReLU(),
  673. ),
  674. ),
  675. nn.AvgPool2d((7, 7),(1, 1)),
  676. Lambda(lambda x: x.view(x.size(0),-1)), # View,
  677. nn.Sequential(Lambda(lambda x: x.view(1,-1) if 1==len(x.size()) else x ),nn.Linear(2048,1000)), # Linear,
  678. )