generate_test_data.py 105 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935
  1. #!/usr/bin/env python3
  2. #
  3. # SPDX-FileCopyrightText: Copyright 2010-2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
  4. #
  5. # SPDX-License-Identifier: Apache-2.0
  6. #
  7. # Licensed under the Apache License, Version 2.0 (the License); you may
  8. # not use this file except in compliance with the License.
  9. # You may obtain a copy of the License at
  10. #
  11. # www.apache.org/licenses/LICENSE-2.0
  12. #
  13. # Unless required by applicable law or agreed to in writing, software
  14. # distributed under the License is distributed on an AS IS BASIS, WITHOUT
  15. # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  16. # See the License for the specific language governing permissions and
  17. # limitations under the License.
  18. #
  19. import os
  20. import sys
  21. import argparse
  22. from packaging import version
  23. from test_settings import TestSettings
  24. from conv_settings import ConvSettings
  25. from pooling_settings import PoolingSettings
  26. from softmax_settings import SoftmaxSettings
  27. from svdf_settings import SVDFSettings
  28. from add_mul_settings import AddMulSettings
  29. from lstm_settings import LSTMSettings
  30. from fully_connected_settings import FullyConnectedSettings
  31. import tensorflow as tf
  32. def parse_args() -> argparse.Namespace:
  33. parser = argparse.ArgumentParser(description="Generate input and refererence output data for unittests."
  34. " It can regenerate all data, load all stored data or a combination of it.")
  35. parser.add_argument('--dataset', type=str, default=None, help="Name of generated test set.")
  36. parser.add_argument('--regenerate-weights', action='store_true', help="Regenerate and store new weights.")
  37. parser.add_argument('--regenerate-input', action='store_true', help="Regenerate and store new input.")
  38. parser.add_argument('--regenerate-biases', action='store_true', help="Regenerate and store new biases.")
  39. parser.add_argument('-a', '--regenerate-all', action='store_true', help="Regenerate and store all data.")
  40. parser.add_argument('-t',
  41. '--testtype',
  42. type=str,
  43. default=None,
  44. choices=[
  45. 'conv', 'depthwise_conv', 'avgpool', 'maxpool', 'fully_connected', 'softmax', 'svdf', 'add',
  46. 'mul', 'lstm'
  47. ],
  48. help='Type of test. There are the operators that have unit tests.')
  49. parser.add_argument('--run-all-testsets',
  50. action='store_true',
  51. help="Run the script for all existing test "
  52. "sets. Regenerate all, partially all or no input data (output may still change, depending on"
  53. " changes in script) depending on regenerate flags. If used together with the -t flag, only"
  54. " tests of that type will be run.")
  55. parser.add_argument('--schema-file', type=str, help="Path to schema file. This may be needed for some tests.")
  56. parser.add_argument('--interpreter', type=str, default='tensorflow', choices=['tensorflow', 'tflite_runtime',
  57. 'tflite_micro'],
  58. help="Use interpreter from tensorflow or tflite_runtime. See README for more info.")
  59. return parser.parse_args()
  60. def load_testdata_sets(regenerate_input, regenerate_weights, regenerate_biases, schema_file, interpreter) -> dict:
  61. """
  62. Add all new testdata sets here
  63. """
  64. testdata_sets = {}
  65. type_of_test = 'conv'
  66. dataset = 'basic'
  67. testdata_sets[dataset] = ConvSettings(dataset,
  68. type_of_test,
  69. regenerate_weights,
  70. regenerate_input,
  71. regenerate_biases,
  72. schema_file,
  73. in_ch=1,
  74. out_ch=1,
  75. x_in=5,
  76. y_in=8,
  77. w_x=2,
  78. w_y=4,
  79. stride_x=1,
  80. stride_y=1,
  81. pad=False,
  82. interpreter=interpreter)
  83. dataset = 'stride2pad1'
  84. testdata_sets[dataset] = ConvSettings(dataset,
  85. type_of_test,
  86. regenerate_weights,
  87. regenerate_input,
  88. regenerate_biases,
  89. schema_file,
  90. in_ch=1,
  91. out_ch=1,
  92. x_in=7,
  93. y_in=7,
  94. w_x=3,
  95. w_y=3,
  96. stride_x=2,
  97. stride_y=2,
  98. pad=True,
  99. interpreter=interpreter)
  100. dataset = 'kernel1x1'
  101. testdata_sets[dataset] = ConvSettings(dataset,
  102. type_of_test,
  103. regenerate_weights,
  104. regenerate_input,
  105. regenerate_biases,
  106. schema_file,
  107. in_ch=19,
  108. out_ch=7,
  109. x_in=7,
  110. y_in=5,
  111. w_x=1,
  112. w_y=1,
  113. stride_x=1,
  114. stride_y=1,
  115. pad=False,
  116. bias_min=TestSettings.INT8_MIN,
  117. bias_max=TestSettings.INT8_MAX,
  118. out_activation_min=-126,
  119. out_activation_max=127,
  120. batches=2,
  121. interpreter=interpreter)
  122. dataset = 'kernel1x1_stride_x'
  123. testdata_sets[dataset] = ConvSettings(dataset,
  124. type_of_test,
  125. regenerate_weights,
  126. regenerate_input,
  127. regenerate_biases,
  128. schema_file,
  129. in_ch=9,
  130. out_ch=5,
  131. x_in=7,
  132. y_in=4,
  133. w_x=1,
  134. w_y=1,
  135. stride_x=3,
  136. stride_y=1,
  137. pad=False,
  138. out_activation_min=-126,
  139. out_activation_max=127,
  140. batches=2,
  141. interpreter=interpreter)
  142. dataset = 'kernel1x1_stride_x_y'
  143. testdata_sets[dataset] = ConvSettings(dataset,
  144. type_of_test,
  145. regenerate_weights,
  146. regenerate_input,
  147. regenerate_biases,
  148. schema_file,
  149. in_ch=23,
  150. out_ch=15,
  151. randmin=0,
  152. x_in=7,
  153. y_in=6,
  154. w_x=1,
  155. w_y=1,
  156. stride_x=2,
  157. stride_y=2,
  158. pad=False,
  159. out_activation_min=-6,
  160. out_activation_max=127,
  161. batches=3,
  162. interpreter=interpreter)
  163. dataset = 'kernel1x1_stride_x_y_1'
  164. testdata_sets[dataset] = ConvSettings(dataset,
  165. type_of_test,
  166. regenerate_weights,
  167. regenerate_input,
  168. regenerate_biases,
  169. schema_file,
  170. in_ch=5,
  171. out_ch=5,
  172. x_in=4,
  173. y_in=4,
  174. w_x=1,
  175. w_y=1,
  176. stride_x=2,
  177. stride_y=2,
  178. pad=False,
  179. out_activation_min=-126,
  180. out_activation_max=127,
  181. batches=2,
  182. interpreter=interpreter)
  183. dataset = 'kernel1x1_stride_x_y_2'
  184. testdata_sets[dataset] = ConvSettings(dataset,
  185. type_of_test,
  186. regenerate_weights,
  187. regenerate_input,
  188. regenerate_biases,
  189. schema_file,
  190. in_ch=5,
  191. out_ch=5,
  192. x_in=4,
  193. y_in=4,
  194. w_x=1,
  195. w_y=1,
  196. stride_x=3,
  197. stride_y=3,
  198. pad=False,
  199. out_activation_min=-126,
  200. out_activation_max=127,
  201. batches=2,
  202. interpreter=interpreter)
  203. dataset = 'conv_3'
  204. testdata_sets[dataset] = ConvSettings(dataset,
  205. type_of_test,
  206. regenerate_weights,
  207. regenerate_input,
  208. regenerate_biases,
  209. schema_file,
  210. in_ch=3,
  211. out_ch=1,
  212. x_in=10,
  213. y_in=49,
  214. w_x=4,
  215. w_y=10,
  216. stride_x=1,
  217. stride_y=2,
  218. pad=True,
  219. out_activation_min=-127,
  220. out_activation_max=127,
  221. interpreter=interpreter)
  222. dataset = 'conv_1_x_n_1' # left and right pad, no non-padded elements
  223. testdata_sets[dataset] = ConvSettings(dataset,
  224. type_of_test,
  225. regenerate_weights,
  226. regenerate_input,
  227. regenerate_biases,
  228. schema_file,
  229. in_ch=4,
  230. out_ch=3,
  231. x_in=2,
  232. y_in=1,
  233. w_x=3,
  234. w_y=1,
  235. stride_x=1,
  236. stride_y=1,
  237. pad=True,
  238. out_activation_min=-127,
  239. out_activation_max=127,
  240. batches=2,
  241. interpreter=interpreter)
  242. dataset = 'conv_1_x_n_2' # no pad
  243. testdata_sets[dataset] = ConvSettings(dataset,
  244. type_of_test,
  245. regenerate_weights,
  246. regenerate_input,
  247. regenerate_biases,
  248. schema_file,
  249. in_ch=4,
  250. out_ch=3,
  251. x_in=296,
  252. y_in=1,
  253. w_x=48,
  254. w_y=1,
  255. stride_x=2,
  256. stride_y=1,
  257. pad=False,
  258. out_activation_min=-111,
  259. out_activation_max=127,
  260. interpreter=interpreter)
  261. dataset = 'conv_1_x_n_3'
  262. testdata_sets[dataset] = ConvSettings(dataset,
  263. type_of_test,
  264. regenerate_weights,
  265. regenerate_input,
  266. regenerate_biases,
  267. schema_file,
  268. in_ch=4,
  269. out_ch=1,
  270. x_in=296,
  271. y_in=1,
  272. w_x=48,
  273. w_y=1,
  274. stride_x=2,
  275. stride_y=1,
  276. pad=True,
  277. out_activation_min=-111,
  278. out_activation_max=127,
  279. interpreter=interpreter)
  280. dataset = 'conv_1_x_n_4' # 0 left pad, 1 right pad
  281. testdata_sets[dataset] = ConvSettings(dataset,
  282. type_of_test,
  283. regenerate_weights,
  284. regenerate_input,
  285. regenerate_biases,
  286. schema_file,
  287. in_ch=4,
  288. out_ch=4,
  289. x_in=16,
  290. y_in=1,
  291. w_x=3,
  292. w_y=1,
  293. stride_x=2,
  294. stride_y=1,
  295. pad=True,
  296. out_activation_min=-88,
  297. out_activation_max=127,
  298. interpreter=interpreter)
  299. dataset = 'conv_1_x_n_5'
  300. testdata_sets[dataset] = ConvSettings(dataset,
  301. type_of_test,
  302. regenerate_weights,
  303. regenerate_input,
  304. regenerate_biases,
  305. schema_file,
  306. in_ch=4,
  307. out_ch=1,
  308. x_in=17,
  309. y_in=1,
  310. w_x=3,
  311. w_y=1,
  312. stride_x=3,
  313. stride_y=1,
  314. pad=True,
  315. out_activation_min=-88,
  316. out_activation_max=127,
  317. interpreter=interpreter)
  318. dataset = 'conv_2'
  319. testdata_sets[dataset] = ConvSettings(dataset,
  320. type_of_test,
  321. regenerate_weights,
  322. regenerate_input,
  323. regenerate_biases,
  324. schema_file,
  325. in_ch=2,
  326. out_ch=4,
  327. x_in=6,
  328. y_in=3,
  329. w_x=3,
  330. w_y=3,
  331. stride_x=1,
  332. stride_y=1,
  333. pad=True,
  334. out_activation_min=-101,
  335. out_activation_max=127,
  336. interpreter=interpreter)
  337. dataset = 'conv_4' # batches > 2
  338. testdata_sets[dataset] = ConvSettings(dataset,
  339. type_of_test,
  340. regenerate_weights,
  341. regenerate_input,
  342. regenerate_biases,
  343. schema_file,
  344. in_ch=3,
  345. out_ch=3,
  346. x_in=5,
  347. y_in=5,
  348. w_x=2,
  349. w_y=3,
  350. stride_x=2,
  351. stride_y=2,
  352. pad=False,
  353. out_activation_min=-109,
  354. out_activation_max=127,
  355. batches=3,
  356. interpreter=interpreter)
  357. dataset = 'conv_5'
  358. testdata_sets[dataset] = ConvSettings(dataset,
  359. type_of_test,
  360. regenerate_weights,
  361. regenerate_input,
  362. regenerate_biases,
  363. schema_file,
  364. in_ch=128,
  365. out_ch=1,
  366. x_in=128,
  367. y_in=1,
  368. w_x=3,
  369. w_y=3,
  370. stride_x=4,
  371. stride_y=4,
  372. pad=True,
  373. out_activation_min=-88,
  374. out_activation_max=127,
  375. interpreter=interpreter)
  376. dataset = 'conv_out_activation'
  377. testdata_sets[dataset] = ConvSettings(dataset,
  378. type_of_test,
  379. regenerate_weights,
  380. regenerate_input,
  381. regenerate_biases,
  382. schema_file,
  383. in_ch=4,
  384. out_ch=2,
  385. x_in=3,
  386. y_in=3,
  387. w_x=3,
  388. w_y=3,
  389. stride_x=1,
  390. stride_y=1,
  391. pad=True,
  392. out_activation_min=-61,
  393. out_activation_max=107,
  394. interpreter=interpreter)
  395. dataset = 'conv_dilation_golden'
  396. testdata_sets[dataset] = ConvSettings(dataset,
  397. type_of_test,
  398. regenerate_weights,
  399. regenerate_input,
  400. regenerate_biases,
  401. schema_file,
  402. in_ch=1,
  403. batches=2,
  404. out_ch=3,
  405. x_in=6,
  406. y_in=4,
  407. w_x=2,
  408. w_y=2,
  409. stride_x=1,
  410. stride_y=1,
  411. pad=True,
  412. out_activation_min=-128,
  413. out_activation_max=127,
  414. dilation_x=3,
  415. dilation_y=2,
  416. interpreter=interpreter)
  417. dataset = 'conv_2x2_dilation'
  418. testdata_sets[dataset] = ConvSettings(dataset,
  419. type_of_test,
  420. regenerate_weights,
  421. regenerate_input,
  422. regenerate_biases,
  423. schema_file,
  424. in_ch=2,
  425. out_ch=2,
  426. x_in=10,
  427. y_in=10,
  428. w_x=3,
  429. w_y=3,
  430. stride_x=1,
  431. stride_y=1,
  432. pad=False,
  433. out_activation_min=-61,
  434. out_activation_max=107,
  435. dilation_x=2,
  436. dilation_y=2,
  437. interpreter=interpreter)
  438. dataset = 'conv_2x3_dilation'
  439. testdata_sets[dataset] = ConvSettings(dataset,
  440. type_of_test,
  441. regenerate_weights,
  442. regenerate_input,
  443. regenerate_biases,
  444. schema_file,
  445. in_ch=2,
  446. out_ch=2,
  447. x_in=3,
  448. y_in=3,
  449. w_x=3,
  450. w_y=3,
  451. stride_x=1,
  452. stride_y=1,
  453. pad=True,
  454. out_activation_min=-61,
  455. out_activation_max=107,
  456. dilation_x=2,
  457. dilation_y=2,
  458. interpreter=interpreter)
  459. dataset = 'conv_3x2_dilation'
  460. testdata_sets[dataset] = ConvSettings(dataset,
  461. type_of_test,
  462. regenerate_weights,
  463. regenerate_input,
  464. regenerate_biases,
  465. schema_file,
  466. in_ch=2,
  467. out_ch=2,
  468. x_in=3,
  469. y_in=3,
  470. w_x=3,
  471. w_y=3,
  472. stride_x=1,
  473. stride_y=1,
  474. pad=True,
  475. out_activation_min=-61,
  476. out_activation_max=107,
  477. dilation_x=3,
  478. dilation_y=2,
  479. interpreter=interpreter)
  480. dataset = 'conv_2x2_dilation_5x5_input'
  481. testdata_sets[dataset] = ConvSettings(dataset,
  482. type_of_test,
  483. regenerate_weights,
  484. regenerate_input,
  485. regenerate_biases,
  486. schema_file,
  487. in_ch=2,
  488. out_ch=2,
  489. x_in=5,
  490. y_in=5,
  491. w_x=3,
  492. w_y=3,
  493. stride_x=1,
  494. stride_y=1,
  495. pad=True,
  496. out_activation_min=-61,
  497. out_activation_max=107,
  498. dilation_x=2,
  499. dilation_y=2,
  500. interpreter=interpreter)
  501. dataset = 'conv_3x3_dilation_5x5_input'
  502. testdata_sets[dataset] = ConvSettings(dataset,
  503. type_of_test,
  504. regenerate_weights,
  505. regenerate_input,
  506. regenerate_biases,
  507. schema_file,
  508. in_ch=2,
  509. out_ch=2,
  510. x_in=9,
  511. y_in=11,
  512. w_x=3,
  513. w_y=3,
  514. stride_x=1,
  515. stride_y=1,
  516. pad=True,
  517. out_activation_min=-61,
  518. out_activation_max=107,
  519. dilation_x=2,
  520. dilation_y=2,
  521. interpreter=interpreter)
  522. dataset = 'int16xint8'
  523. testdata_sets[dataset] = ConvSettings(dataset,
  524. type_of_test,
  525. regenerate_weights,
  526. regenerate_input,
  527. regenerate_biases,
  528. schema_file,
  529. in_ch=3,
  530. out_ch=4,
  531. x_in=7,
  532. y_in=8,
  533. w_x=2,
  534. w_y=4,
  535. stride_x=2,
  536. stride_y=3,
  537. pad=True,
  538. randmin=TestSettings.INT16_MIN,
  539. randmax=TestSettings.INT16_MAX,
  540. out_activation_min=-13335,
  541. out_activation_max=32767,
  542. int16xint8=True,
  543. interpreter=interpreter)
  544. dataset = 'requantize_s64'
  545. testdata_sets[dataset] = ConvSettings(dataset,
  546. type_of_test,
  547. regenerate_weights,
  548. regenerate_input,
  549. regenerate_biases,
  550. schema_file,
  551. in_ch=2,
  552. out_ch=2,
  553. x_in=3,
  554. y_in=2,
  555. w_x=2,
  556. w_y=2,
  557. stride_x=1,
  558. stride_y=1,
  559. pad=False,
  560. out_activation_min=TestSettings.INT16_MIN,
  561. out_activation_max=TestSettings.INT16_MAX,
  562. int16xint8=True,
  563. bias_min=-0x300,
  564. bias_max=0x9fff,
  565. interpreter=interpreter)
  566. dataset = 'int16xint8_dilation_1'
  567. testdata_sets[dataset] = ConvSettings(dataset,
  568. type_of_test,
  569. regenerate_weights,
  570. regenerate_input,
  571. regenerate_biases,
  572. schema_file,
  573. in_ch=2,
  574. out_ch=2,
  575. x_in=32,
  576. y_in=32,
  577. w_x=2,
  578. w_y=2,
  579. stride_x=1,
  580. stride_y=1,
  581. pad=False,
  582. out_activation_min=TestSettings.INT16_MIN,
  583. out_activation_max=TestSettings.INT16_MAX,
  584. int16xint8=True,
  585. bias_min=-0x300,
  586. dilation_x=2,
  587. dilation_y=2,
  588. interpreter=interpreter)
  589. dataset = 'int16xint8_dilation_2'
  590. testdata_sets[dataset] = ConvSettings(dataset,
  591. type_of_test,
  592. regenerate_weights,
  593. regenerate_input,
  594. regenerate_biases,
  595. schema_file,
  596. in_ch=3,
  597. out_ch=4,
  598. x_in=7,
  599. y_in=8,
  600. w_x=2,
  601. w_y=4,
  602. stride_x=1,
  603. stride_y=1,
  604. pad=True,
  605. randmin=TestSettings.INT16_MIN,
  606. randmax=TestSettings.INT16_MAX,
  607. out_activation_min=-13335,
  608. out_activation_max=32767,
  609. int16xint8=True,
  610. dilation_x=2,
  611. dilation_y=2,
  612. interpreter=interpreter)
  613. dataset = 'int16xint8_dilation_3'
  614. testdata_sets[dataset] = ConvSettings(dataset,
  615. type_of_test,
  616. regenerate_weights,
  617. regenerate_input,
  618. regenerate_biases,
  619. schema_file,
  620. in_ch=3,
  621. out_ch=4,
  622. x_in=7,
  623. y_in=8,
  624. w_x=2,
  625. w_y=4,
  626. stride_x=1,
  627. stride_y=1,
  628. pad=True,
  629. randmin=TestSettings.INT16_MIN,
  630. randmax=TestSettings.INT16_MAX,
  631. out_activation_min=-13335,
  632. out_activation_max=32767,
  633. int16xint8=True,
  634. dilation_x=2,
  635. interpreter=interpreter)
  636. type_of_test = 'depthwise_conv'
  637. dataset = 'depthwise_2'
  638. testdata_sets[dataset] = ConvSettings(dataset,
  639. type_of_test,
  640. regenerate_weights,
  641. regenerate_input,
  642. regenerate_biases,
  643. schema_file,
  644. in_ch=3,
  645. out_ch=9,
  646. x_in=6,
  647. y_in=5,
  648. w_x=3,
  649. w_y=4,
  650. stride_x=2,
  651. stride_y=2,
  652. pad=True,
  653. out_activation_min=-73,
  654. out_activation_max=127,
  655. interpreter=interpreter)
  656. dataset = 'depthwise_kernel_3x3'
  657. testdata_sets[dataset] = ConvSettings(dataset,
  658. type_of_test,
  659. regenerate_weights,
  660. regenerate_input,
  661. regenerate_biases,
  662. schema_file,
  663. in_ch=5,
  664. out_ch=5,
  665. x_in=4,
  666. y_in=5,
  667. w_x=3,
  668. w_y=3,
  669. stride_x=2,
  670. stride_y=2,
  671. pad=True,
  672. bias_min=TestSettings.INT8_MIN,
  673. bias_max=TestSettings.INT8_MAX,
  674. out_activation_min=-104,
  675. out_activation_max=127,
  676. interpreter=interpreter)
  677. dataset = 'depthwise_kernel_3x3_null_bias'
  678. testdata_sets[dataset] = ConvSettings(dataset,
  679. type_of_test,
  680. regenerate_weights,
  681. regenerate_input,
  682. regenerate_biases,
  683. schema_file,
  684. in_ch=5,
  685. out_ch=5,
  686. x_in=4,
  687. y_in=5,
  688. w_x=3,
  689. w_y=3,
  690. stride_x=2,
  691. stride_y=2,
  692. pad=True,
  693. generate_bias=False,
  694. out_activation_min=-104,
  695. out_activation_max=127,
  696. interpreter=interpreter)
  697. dataset = 'depthwise_eq_in_out_ch'
  698. testdata_sets[dataset] = ConvSettings(dataset,
  699. type_of_test,
  700. regenerate_weights,
  701. regenerate_input,
  702. regenerate_biases,
  703. schema_file,
  704. in_ch=250,
  705. out_ch=250,
  706. x_in=7,
  707. y_in=5,
  708. w_x=2,
  709. w_y=2,
  710. stride_x=1,
  711. stride_y=1,
  712. pad=True,
  713. interpreter=interpreter)
  714. dataset = 'depthwise_sub_block'
  715. testdata_sets[dataset] = ConvSettings(dataset,
  716. type_of_test,
  717. regenerate_weights,
  718. regenerate_input,
  719. regenerate_biases,
  720. schema_file,
  721. in_ch=9,
  722. out_ch=9,
  723. x_in=7,
  724. y_in=5,
  725. w_x=2,
  726. w_y=2,
  727. stride_x=1,
  728. stride_y=1,
  729. pad=False,
  730. interpreter=interpreter)
  731. dataset = 'depthwise_x_stride'
  732. testdata_sets[dataset] = ConvSettings(dataset,
  733. type_of_test,
  734. regenerate_weights,
  735. regenerate_input,
  736. regenerate_biases,
  737. schema_file,
  738. in_ch=9,
  739. out_ch=9,
  740. x_in=7,
  741. y_in=5,
  742. w_x=2,
  743. w_y=2,
  744. stride_x=2,
  745. stride_y=1,
  746. pad=False,
  747. interpreter=interpreter)
  748. dataset = 'depthwise_out_activation'
  749. testdata_sets[dataset] = ConvSettings(dataset,
  750. type_of_test,
  751. regenerate_weights,
  752. regenerate_input,
  753. regenerate_biases,
  754. schema_file,
  755. in_ch=3,
  756. out_ch=3,
  757. x_in=6,
  758. y_in=5,
  759. w_x=3,
  760. w_y=4,
  761. pad=False,
  762. out_activation_min=-45,
  763. out_activation_max=103,
  764. interpreter=interpreter)
  765. dataset = 'depthwise_mult_batches'
  766. testdata_sets[dataset] = ConvSettings(dataset,
  767. type_of_test,
  768. regenerate_weights,
  769. regenerate_input,
  770. regenerate_biases,
  771. schema_file,
  772. in_ch=3,
  773. out_ch=3,
  774. x_in=3,
  775. y_in=5,
  776. w_x=2,
  777. w_y=4,
  778. stride_x=2,
  779. stride_y=2,
  780. pad=True,
  781. batches=2,
  782. interpreter=interpreter)
  783. dataset = 'depthwise_null_bias_0'
  784. testdata_sets[dataset] = ConvSettings(dataset,
  785. type_of_test,
  786. regenerate_weights,
  787. regenerate_input,
  788. regenerate_biases,
  789. schema_file,
  790. in_ch=2,
  791. out_ch=2,
  792. x_in=4,
  793. y_in=5,
  794. w_x=2,
  795. w_y=2,
  796. stride_x=1,
  797. stride_y=1,
  798. pad=True,
  799. generate_bias=False,
  800. batches=1,
  801. interpreter=interpreter)
  802. dataset = 'depthwise_null_bias_1'
  803. testdata_sets[dataset] = ConvSettings(dataset,
  804. type_of_test,
  805. regenerate_weights,
  806. regenerate_input,
  807. regenerate_biases,
  808. schema_file,
  809. in_ch=2,
  810. out_ch=16,
  811. x_in=4,
  812. y_in=5,
  813. w_x=2,
  814. w_y=2,
  815. stride_x=1,
  816. stride_y=1,
  817. pad=True,
  818. generate_bias=False,
  819. batches=1,
  820. interpreter=interpreter)
  821. dataset = 'depthwise_dilation'
  822. testdata_sets[dataset] = ConvSettings(dataset,
  823. type_of_test,
  824. regenerate_weights,
  825. regenerate_input,
  826. regenerate_biases,
  827. schema_file,
  828. in_ch=3,
  829. out_ch=9,
  830. x_in=6,
  831. y_in=5,
  832. w_x=3,
  833. w_y=4,
  834. stride_x=2,
  835. stride_y=2,
  836. pad=True,
  837. out_activation_min=-70,
  838. out_activation_max=127,
  839. dilation_x=2,
  840. dilation_y=3,
  841. interpreter=interpreter)
  842. dataset = 'dw_int16xint8'
  843. testdata_sets[dataset] = ConvSettings(dataset,
  844. type_of_test,
  845. regenerate_weights,
  846. regenerate_input,
  847. regenerate_biases,
  848. schema_file,
  849. in_ch=4,
  850. out_ch=8,
  851. x_in=9,
  852. y_in=5,
  853. w_x=3,
  854. w_y=4,
  855. stride_x=3,
  856. stride_y=2,
  857. pad=True,
  858. randmin=TestSettings.INT16_MIN,
  859. randmax=TestSettings.INT16_MAX,
  860. out_activation_min=-21111,
  861. out_activation_max=32767,
  862. int16xint8=True,
  863. interpreter=interpreter)
  864. dataset = 'dw_int16xint8_dilation'
  865. testdata_sets[dataset] = ConvSettings(dataset,
  866. type_of_test,
  867. regenerate_weights,
  868. regenerate_input,
  869. regenerate_biases,
  870. schema_file,
  871. in_ch=4,
  872. out_ch=8,
  873. x_in=9,
  874. y_in=5,
  875. w_x=4,
  876. w_y=4,
  877. stride_x=1,
  878. stride_y=1,
  879. pad=True,
  880. randmin=TestSettings.INT16_MIN,
  881. randmax=TestSettings.INT16_MAX,
  882. out_activation_min=-32700,
  883. dilation_x=3,
  884. dilation_y=2,
  885. out_activation_max=32767,
  886. int16xint8=True,
  887. interpreter=interpreter)
  888. dataset = 'dw_int16xint8_mult4'
  889. testdata_sets[dataset] = ConvSettings(dataset,
  890. type_of_test,
  891. regenerate_weights,
  892. regenerate_input,
  893. regenerate_biases,
  894. schema_file,
  895. in_ch=2,
  896. out_ch=8,
  897. x_in=4,
  898. y_in=5,
  899. w_x=3,
  900. w_y=4,
  901. stride_x=3,
  902. stride_y=2,
  903. pad=False,
  904. randmin=TestSettings.INT16_MIN,
  905. randmax=TestSettings.INT16_MAX,
  906. out_activation_min=-32767,
  907. out_activation_max=32767,
  908. int16xint8=True,
  909. interpreter=interpreter)
  910. dataset = 'dw_int16xint8_fast'
  911. testdata_sets[dataset] = ConvSettings(dataset,
  912. type_of_test,
  913. regenerate_weights,
  914. regenerate_input,
  915. regenerate_biases,
  916. schema_file,
  917. in_ch=8,
  918. out_ch=8,
  919. x_in=4,
  920. y_in=4,
  921. w_x=2,
  922. w_y=2,
  923. stride_x=1,
  924. stride_y=1,
  925. pad=False,
  926. randmin=TestSettings.INT16_MIN,
  927. randmax=TestSettings.INT16_MAX,
  928. out_activation_min=-17000,
  929. out_activation_max=32767,
  930. int16xint8=True,
  931. interpreter=interpreter)
  932. dataset = 'dw_int16xint8_fast_multiple_batches_uneven_buffers'
  933. testdata_sets[dataset] = ConvSettings(dataset,
  934. type_of_test,
  935. regenerate_weights,
  936. regenerate_input,
  937. regenerate_biases,
  938. schema_file,
  939. in_ch=8,
  940. out_ch=8,
  941. x_in=5,
  942. y_in=5,
  943. w_x=3,
  944. w_y=3,
  945. stride_x=1,
  946. stride_y=1,
  947. pad=False,
  948. randmin=TestSettings.INT16_MIN,
  949. randmax=TestSettings.INT16_MAX,
  950. out_activation_min=-17000,
  951. out_activation_max=32767,
  952. int16xint8=True,
  953. batches=3,
  954. interpreter=interpreter)
  955. dataset = 'dw_int16xint8_fast_multiple_batches_uneven_buffers_null_bias'
  956. testdata_sets[dataset] = ConvSettings(dataset,
  957. type_of_test,
  958. regenerate_weights,
  959. regenerate_input,
  960. regenerate_biases,
  961. schema_file,
  962. in_ch=8,
  963. out_ch=8,
  964. x_in=4,
  965. y_in=4,
  966. w_x=3,
  967. w_y=2,
  968. stride_x=1,
  969. stride_y=1,
  970. pad=False,
  971. randmin=TestSettings.INT16_MIN,
  972. randmax=TestSettings.INT16_MAX,
  973. out_activation_min=-17000,
  974. out_activation_max=32767,
  975. int16xint8=True,
  976. batches=3,
  977. generate_bias=False,
  978. interpreter=interpreter)
  979. dataset = 'dw_int16xint8_fast_test_bias'
  980. nbr_of_out_channels = 8
  981. bias = [i for i in range(nbr_of_out_channels)]
  982. testdata_sets[dataset] = ConvSettings(dataset,
  983. type_of_test,
  984. regenerate_weights,
  985. regenerate_input,
  986. regenerate_biases,
  987. schema_file,
  988. in_ch=8,
  989. out_ch=nbr_of_out_channels,
  990. x_in=4,
  991. y_in=4,
  992. w_x=2,
  993. w_y=2,
  994. stride_x=1,
  995. stride_y=1,
  996. pad=False,
  997. randmin=TestSettings.INT16_MIN,
  998. randmax=TestSettings.INT16_MAX,
  999. out_activation_min=-17000,
  1000. out_activation_max=32767,
  1001. int16xint8=True,
  1002. generate_bias=bias,
  1003. interpreter=interpreter)
  1004. dataset = 'dw_int16xint8_fast_null_bias'
  1005. testdata_sets[dataset] = ConvSettings(dataset,
  1006. type_of_test,
  1007. regenerate_weights,
  1008. regenerate_input,
  1009. regenerate_biases,
  1010. schema_file,
  1011. in_ch=8,
  1012. out_ch=8,
  1013. x_in=4,
  1014. y_in=4,
  1015. w_x=2,
  1016. w_y=2,
  1017. stride_x=1,
  1018. stride_y=1,
  1019. pad=False,
  1020. randmin=TestSettings.INT16_MIN,
  1021. randmax=TestSettings.INT16_MAX,
  1022. out_activation_min=-17000,
  1023. out_activation_max=32767,
  1024. int16xint8=True,
  1025. generate_bias=False,
  1026. interpreter=interpreter)
  1027. dataset = 'dw_int16xint8_fast_stride'
  1028. testdata_sets[dataset] = ConvSettings(dataset,
  1029. type_of_test,
  1030. regenerate_weights,
  1031. regenerate_input,
  1032. regenerate_biases,
  1033. schema_file,
  1034. in_ch=8,
  1035. out_ch=8,
  1036. x_in=4,
  1037. y_in=4,
  1038. w_x=2,
  1039. w_y=2,
  1040. stride_x=2,
  1041. stride_y=2,
  1042. pad=True,
  1043. randmin=TestSettings.INT16_MIN,
  1044. randmax=TestSettings.INT16_MAX,
  1045. batches=2,
  1046. out_activation_min=TestSettings.INT16_MIN,
  1047. out_activation_max=16000,
  1048. int16xint8=True,
  1049. interpreter=interpreter)
  1050. dataset = 'dw_int16xint8_fast_stride_null_bias'
  1051. testdata_sets[dataset] = ConvSettings(dataset,
  1052. type_of_test,
  1053. regenerate_weights,
  1054. regenerate_input,
  1055. regenerate_biases,
  1056. schema_file,
  1057. in_ch=8,
  1058. out_ch=8,
  1059. x_in=4,
  1060. y_in=4,
  1061. w_x=2,
  1062. w_y=2,
  1063. stride_x=2,
  1064. stride_y=2,
  1065. pad=True,
  1066. randmin=TestSettings.INT16_MIN,
  1067. randmax=TestSettings.INT16_MAX,
  1068. batches=2,
  1069. out_activation_min=TestSettings.INT16_MIN,
  1070. out_activation_max=16000,
  1071. int16xint8=True,
  1072. generate_bias=False,
  1073. interpreter=interpreter)
  1074. dataset = 'dw_int16xint8_fast_spill'
  1075. testdata_sets[dataset] = ConvSettings(dataset,
  1076. type_of_test,
  1077. regenerate_weights,
  1078. regenerate_input,
  1079. regenerate_biases,
  1080. schema_file,
  1081. in_ch=5,
  1082. out_ch=5,
  1083. x_in=4,
  1084. y_in=4,
  1085. w_x=3,
  1086. w_y=3,
  1087. stride_x=2,
  1088. stride_y=1,
  1089. pad=True,
  1090. randmin=TestSettings.INT16_MIN,
  1091. randmax=TestSettings.INT16_MAX,
  1092. batches=3,
  1093. out_activation_min=-30000,
  1094. out_activation_max=32767,
  1095. int16xint8=True,
  1096. interpreter=interpreter)
  1097. dataset = 'dw_int16xint8_fast_spill_null_bias'
  1098. testdata_sets[dataset] = ConvSettings(dataset,
  1099. type_of_test,
  1100. regenerate_weights,
  1101. regenerate_input,
  1102. regenerate_biases,
  1103. schema_file,
  1104. in_ch=5,
  1105. out_ch=5,
  1106. x_in=4,
  1107. y_in=4,
  1108. w_x=3,
  1109. w_y=3,
  1110. stride_x=2,
  1111. stride_y=1,
  1112. pad=True,
  1113. randmin=TestSettings.INT16_MIN,
  1114. randmax=TestSettings.INT16_MAX,
  1115. batches=3,
  1116. out_activation_min=-30000,
  1117. out_activation_max=32767,
  1118. int16xint8=True,
  1119. generate_bias=False,
  1120. interpreter=interpreter)
  1121. type_of_test = 'fully_connected'
  1122. dataset = 'fully_connected'
  1123. testdata_sets[dataset] = FullyConnectedSettings(dataset,
  1124. type_of_test,
  1125. regenerate_weights,
  1126. regenerate_input,
  1127. regenerate_biases,
  1128. schema_file,
  1129. in_ch=10,
  1130. out_ch=6,
  1131. x_in=2,
  1132. y_in=1,
  1133. batches=3,
  1134. interpreter=interpreter)
  1135. dataset = 'fully_connected_mve_0'
  1136. testdata_sets[dataset] = FullyConnectedSettings(dataset,
  1137. type_of_test,
  1138. regenerate_weights,
  1139. regenerate_input,
  1140. regenerate_biases,
  1141. schema_file,
  1142. in_ch=16,
  1143. out_ch=9,
  1144. x_in=1,
  1145. y_in=1,
  1146. batches=1,
  1147. interpreter=interpreter)
  1148. dataset = 'fully_connected_mve_1'
  1149. testdata_sets[dataset] = FullyConnectedSettings(dataset,
  1150. type_of_test,
  1151. regenerate_weights,
  1152. regenerate_input,
  1153. regenerate_biases,
  1154. schema_file,
  1155. in_ch=20,
  1156. out_ch=4,
  1157. x_in=1,
  1158. y_in=1,
  1159. batches=1,
  1160. interpreter=interpreter)
  1161. dataset = 'fully_connected_null_bias_0'
  1162. testdata_sets[dataset] = FullyConnectedSettings(dataset,
  1163. type_of_test,
  1164. regenerate_weights,
  1165. regenerate_input,
  1166. regenerate_biases,
  1167. schema_file,
  1168. in_ch=33,
  1169. out_ch=5,
  1170. batches=2,
  1171. generate_bias=False,
  1172. interpreter=interpreter)
  1173. dataset = 'fully_connected_out_activation'
  1174. testdata_sets[dataset] = FullyConnectedSettings(dataset,
  1175. type_of_test,
  1176. regenerate_weights,
  1177. regenerate_input,
  1178. regenerate_biases,
  1179. schema_file,
  1180. in_ch=10,
  1181. out_ch=4,
  1182. out_activation_min=-70,
  1183. out_activation_max=100,
  1184. interpreter=interpreter)
  1185. dataset = 'fully_connected_int16'
  1186. testdata_sets[dataset] = FullyConnectedSettings(dataset,
  1187. type_of_test,
  1188. regenerate_weights,
  1189. regenerate_input,
  1190. regenerate_biases,
  1191. schema_file,
  1192. in_ch=7,
  1193. out_ch=11,
  1194. x_in=3,
  1195. y_in=3,
  1196. batches=2,
  1197. randmin=TestSettings.INT16_MIN,
  1198. randmax=TestSettings.INT16_MAX,
  1199. out_activation_min=-9999,
  1200. out_activation_max=32767,
  1201. int16xint8=True,
  1202. interpreter=interpreter)
  1203. dataset = 'fully_connected_int16_big'
  1204. testdata_sets[dataset] = FullyConnectedSettings(dataset,
  1205. type_of_test,
  1206. regenerate_weights,
  1207. regenerate_input,
  1208. regenerate_biases,
  1209. schema_file,
  1210. in_ch=7,
  1211. out_ch=11,
  1212. x_in=10,
  1213. y_in=10,
  1214. batches=3,
  1215. out_activation_min=-1444,
  1216. out_activation_max=32767,
  1217. int16xint8=True,
  1218. interpreter=interpreter)
  1219. dataset = 'fc_int16_slow'
  1220. testdata_sets[dataset] = FullyConnectedSettings(dataset,
  1221. type_of_test,
  1222. regenerate_weights,
  1223. regenerate_input,
  1224. regenerate_biases,
  1225. schema_file,
  1226. in_ch=7,
  1227. out_ch=11,
  1228. x_in=10,
  1229. y_in=8,
  1230. batches=3,
  1231. randmin=(TestSettings.INT16_MAX - 100),
  1232. randmax=TestSettings.INT16_MAX,
  1233. int16xint8=True,
  1234. interpreter=interpreter)
  1235. type_of_test = 'avgpool'
  1236. dataset = 'avgpooling'
  1237. testdata_sets[dataset] = PoolingSettings(dataset,
  1238. type_of_test,
  1239. regenerate_weights,
  1240. regenerate_input,
  1241. regenerate_biases,
  1242. schema_file,
  1243. channels=20,
  1244. x_in=22,
  1245. y_in=12,
  1246. stride_x=9,
  1247. stride_y=5,
  1248. w_x=6,
  1249. w_y=5,
  1250. pad=True,
  1251. interpreter=interpreter)
  1252. dataset = 'avgpooling_1'
  1253. testdata_sets[dataset] = PoolingSettings(dataset,
  1254. type_of_test,
  1255. regenerate_weights,
  1256. regenerate_input,
  1257. regenerate_biases,
  1258. schema_file,
  1259. channels=3,
  1260. x_in=9,
  1261. y_in=5,
  1262. stride_x=1,
  1263. stride_y=2,
  1264. w_x=9,
  1265. w_y=5,
  1266. pad=False,
  1267. interpreter=interpreter)
  1268. dataset = 'avgpooling_2'
  1269. testdata_sets[dataset] = PoolingSettings(dataset,
  1270. type_of_test,
  1271. regenerate_weights,
  1272. regenerate_input,
  1273. regenerate_biases,
  1274. schema_file,
  1275. channels=5,
  1276. x_in=12,
  1277. y_in=1,
  1278. stride_x=1,
  1279. stride_y=2,
  1280. w_x=3,
  1281. w_y=1,
  1282. pad=True,
  1283. interpreter=interpreter)
  1284. dataset = 'avgpooling_3'
  1285. testdata_sets[dataset] = PoolingSettings(dataset,
  1286. type_of_test,
  1287. regenerate_weights,
  1288. regenerate_input,
  1289. regenerate_biases,
  1290. schema_file,
  1291. channels=2,
  1292. x_in=9,
  1293. y_in=1,
  1294. stride_x=2,
  1295. stride_y=1,
  1296. w_x=1,
  1297. w_y=1,
  1298. pad=False,
  1299. interpreter=interpreter)
  1300. dataset = 'avgpooling_4'
  1301. testdata_sets[dataset] = PoolingSettings(dataset,
  1302. type_of_test,
  1303. regenerate_weights,
  1304. regenerate_input,
  1305. regenerate_biases,
  1306. schema_file,
  1307. channels=2,
  1308. x_in=1,
  1309. y_in=20,
  1310. stride_x=1,
  1311. stride_y=3,
  1312. w_x=1,
  1313. w_y=3,
  1314. pad=True,
  1315. interpreter=interpreter)
  1316. dataset = 'avgpooling_5'
  1317. testdata_sets[dataset] = PoolingSettings(dataset,
  1318. type_of_test,
  1319. regenerate_weights,
  1320. regenerate_input,
  1321. regenerate_biases,
  1322. schema_file,
  1323. channels=1,
  1324. x_in=3,
  1325. y_in=3,
  1326. stride_x=1,
  1327. stride_y=1,
  1328. w_x=1,
  1329. w_y=3,
  1330. pad=True,
  1331. relu6=True,
  1332. interpreter=interpreter)
  1333. dataset = 'avgpooling_int16'
  1334. testdata_sets[dataset] = PoolingSettings(dataset,
  1335. type_of_test,
  1336. regenerate_weights,
  1337. regenerate_input,
  1338. regenerate_biases,
  1339. schema_file,
  1340. channels=17,
  1341. x_in=6,
  1342. y_in=4,
  1343. stride_x=2,
  1344. stride_y=1,
  1345. w_x=2,
  1346. w_y=3,
  1347. pad=True,
  1348. randmin=TestSettings.INT16_MIN,
  1349. randmax=TestSettings.INT16_MAX,
  1350. int16xint8=True,
  1351. interpreter=interpreter)
  1352. dataset = 'avgpooling_int16_1'
  1353. testdata_sets[dataset] = PoolingSettings(dataset,
  1354. type_of_test,
  1355. regenerate_weights,
  1356. regenerate_input,
  1357. regenerate_biases,
  1358. schema_file,
  1359. channels=2,
  1360. x_in=9,
  1361. y_in=1,
  1362. stride_x=2,
  1363. stride_y=1,
  1364. w_x=1,
  1365. w_y=1,
  1366. pad=False,
  1367. randmin=TestSettings.INT16_MIN,
  1368. randmax=TestSettings.INT16_MAX,
  1369. int16xint8=True,
  1370. interpreter=interpreter)
  1371. dataset = 'avgpooling_int16_2'
  1372. testdata_sets[dataset] = PoolingSettings(dataset,
  1373. type_of_test,
  1374. regenerate_weights,
  1375. regenerate_input,
  1376. regenerate_biases,
  1377. schema_file,
  1378. channels=20,
  1379. x_in=9,
  1380. y_in=1,
  1381. stride_x=2,
  1382. stride_y=1,
  1383. w_x=1,
  1384. w_y=1,
  1385. pad=False,
  1386. randmin=TestSettings.INT16_MIN,
  1387. randmax=TestSettings.INT16_MAX,
  1388. int16xint8=True,
  1389. interpreter=interpreter)
  1390. dataset = 'avgpooling_int16_3'
  1391. testdata_sets[dataset] = PoolingSettings(dataset,
  1392. type_of_test,
  1393. regenerate_weights,
  1394. regenerate_input,
  1395. regenerate_biases,
  1396. schema_file,
  1397. channels=21,
  1398. x_in=1,
  1399. y_in=20,
  1400. stride_x=1,
  1401. stride_y=3,
  1402. w_x=1,
  1403. w_y=3,
  1404. pad=True,
  1405. randmin=TestSettings.INT16_MIN,
  1406. randmax=TestSettings.INT16_MAX,
  1407. int16xint8=True,
  1408. interpreter=interpreter)
  1409. type_of_test = 'maxpool'
  1410. dataset = 'maxpooling'
  1411. testdata_sets[dataset] = PoolingSettings(dataset,
  1412. type_of_test,
  1413. regenerate_weights,
  1414. regenerate_input,
  1415. regenerate_biases,
  1416. schema_file,
  1417. channels=8,
  1418. x_in=22,
  1419. y_in=12,
  1420. stride_x=9,
  1421. stride_y=5,
  1422. w_x=6,
  1423. w_y=5,
  1424. pad=True,
  1425. interpreter=interpreter)
  1426. dataset = 'maxpooling_1'
  1427. testdata_sets[dataset] = PoolingSettings(dataset,
  1428. type_of_test,
  1429. regenerate_weights,
  1430. regenerate_input,
  1431. regenerate_biases,
  1432. schema_file,
  1433. channels=3,
  1434. x_in=9,
  1435. y_in=5,
  1436. stride_x=1,
  1437. stride_y=2,
  1438. w_x=9,
  1439. w_y=5,
  1440. pad=False,
  1441. interpreter=interpreter)
  1442. dataset = 'maxpooling_2'
  1443. testdata_sets[dataset] = PoolingSettings(dataset,
  1444. type_of_test,
  1445. regenerate_weights,
  1446. regenerate_input,
  1447. regenerate_biases,
  1448. schema_file,
  1449. channels=5,
  1450. x_in=12,
  1451. y_in=1,
  1452. stride_x=1,
  1453. stride_y=2,
  1454. w_x=3,
  1455. w_y=1,
  1456. pad=True,
  1457. interpreter=interpreter)
  1458. dataset = 'maxpooling_3'
  1459. testdata_sets[dataset] = PoolingSettings(dataset,
  1460. type_of_test,
  1461. regenerate_weights,
  1462. regenerate_input,
  1463. regenerate_biases,
  1464. schema_file,
  1465. channels=2,
  1466. x_in=9,
  1467. y_in=1,
  1468. stride_x=2,
  1469. stride_y=1,
  1470. w_x=1,
  1471. w_y=1,
  1472. pad=False,
  1473. interpreter=interpreter)
  1474. dataset = 'maxpooling_4'
  1475. testdata_sets[dataset] = PoolingSettings(dataset,
  1476. type_of_test,
  1477. regenerate_weights,
  1478. regenerate_input,
  1479. regenerate_biases,
  1480. schema_file,
  1481. channels=2,
  1482. x_in=1,
  1483. y_in=20,
  1484. stride_x=1,
  1485. stride_y=3,
  1486. w_x=1,
  1487. w_y=3,
  1488. pad=True,
  1489. interpreter=interpreter)
  1490. dataset = 'maxpooling_5'
  1491. testdata_sets[dataset] = PoolingSettings(dataset,
  1492. type_of_test,
  1493. regenerate_weights,
  1494. regenerate_input,
  1495. regenerate_biases,
  1496. schema_file,
  1497. channels=20,
  1498. x_in=1,
  1499. y_in=1,
  1500. stride_x=1,
  1501. stride_y=1,
  1502. w_x=1,
  1503. w_y=1,
  1504. pad=True,
  1505. interpreter=interpreter)
  1506. dataset = 'maxpooling_6'
  1507. testdata_sets[dataset] = PoolingSettings(dataset,
  1508. type_of_test,
  1509. regenerate_weights,
  1510. regenerate_input,
  1511. regenerate_biases,
  1512. schema_file,
  1513. channels=17,
  1514. x_in=1,
  1515. y_in=5,
  1516. stride_x=1,
  1517. stride_y=3,
  1518. w_x=3,
  1519. w_y=4,
  1520. pad=True,
  1521. interpreter=interpreter)
  1522. dataset = 'maxpooling_7'
  1523. testdata_sets[dataset] = PoolingSettings(dataset,
  1524. type_of_test,
  1525. regenerate_weights,
  1526. regenerate_input,
  1527. regenerate_biases,
  1528. schema_file,
  1529. channels=1,
  1530. x_in=4,
  1531. y_in=2,
  1532. stride_x=2,
  1533. stride_y=2,
  1534. w_x=2,
  1535. w_y=2,
  1536. pad=False,
  1537. relu6=True,
  1538. interpreter=interpreter)
  1539. dataset = 'maxpool_int16'
  1540. testdata_sets[dataset] = PoolingSettings(dataset,
  1541. type_of_test,
  1542. regenerate_weights,
  1543. regenerate_input,
  1544. regenerate_biases,
  1545. schema_file,
  1546. channels=2,
  1547. x_in=4,
  1548. y_in=3,
  1549. stride_x=2,
  1550. stride_y=2,
  1551. w_x=2,
  1552. w_y=2,
  1553. pad=False,
  1554. randmin=TestSettings.INT16_MIN,
  1555. randmax=TestSettings.INT16_MAX,
  1556. int16xint8=True,
  1557. interpreter=interpreter)
  1558. dataset = 'maxpool_int16_1'
  1559. testdata_sets[dataset] = PoolingSettings(dataset,
  1560. type_of_test,
  1561. regenerate_weights,
  1562. regenerate_input,
  1563. regenerate_biases,
  1564. schema_file,
  1565. channels=2,
  1566. x_in=4,
  1567. y_in=5,
  1568. stride_x=2,
  1569. stride_y=1,
  1570. w_x=3,
  1571. w_y=3,
  1572. pad=True,
  1573. randmin=TestSettings.INT16_MIN,
  1574. randmax=TestSettings.INT16_MAX,
  1575. out_activation_min=-30000,
  1576. out_activation_max=30000,
  1577. int16xint8=True,
  1578. interpreter=interpreter)
  1579. dataset = 'maxpool_int16_2'
  1580. testdata_sets[dataset] = PoolingSettings(dataset,
  1581. type_of_test,
  1582. regenerate_weights,
  1583. regenerate_input,
  1584. regenerate_biases,
  1585. schema_file,
  1586. channels=3,
  1587. x_in=7,
  1588. y_in=7,
  1589. stride_x=1,
  1590. stride_y=1,
  1591. w_x=3,
  1592. w_y=3,
  1593. pad=False,
  1594. randmin=TestSettings.INT16_MIN,
  1595. randmax=TestSettings.INT16_MAX,
  1596. out_activation_min=-30000,
  1597. out_activation_max=30000,
  1598. int16xint8=True,
  1599. interpreter=interpreter)
  1600. type_of_test = 'softmax'
  1601. dataset = 'softmax'
  1602. testdata_sets[dataset] = SoftmaxSettings(dataset,
  1603. type_of_test,
  1604. regenerate_weights,
  1605. regenerate_input,
  1606. regenerate_biases,
  1607. schema_file,
  1608. x_in=5,
  1609. y_in=2,
  1610. interpreter=interpreter)
  1611. dataset = 'softmax_s16'
  1612. testdata_sets[dataset] = SoftmaxSettings(dataset,
  1613. type_of_test,
  1614. regenerate_weights,
  1615. regenerate_input,
  1616. regenerate_biases,
  1617. schema_file,
  1618. x_in=10,
  1619. y_in=3,
  1620. int16xint8=True,
  1621. randmin=TestSettings.INT16_MIN,
  1622. randmax=TestSettings.INT16_MAX,
  1623. interpreter=interpreter)
  1624. dataset = 'softmax_s8_s16'
  1625. testdata_sets[dataset] = SoftmaxSettings(dataset,
  1626. type_of_test,
  1627. regenerate_weights,
  1628. regenerate_input,
  1629. regenerate_biases,
  1630. schema_file,
  1631. x_in=12,
  1632. y_in=2,
  1633. inInt8outInt16=True,
  1634. interpreter=interpreter)
  1635. type_of_test = 'svdf'
  1636. dataset = 'svdf'
  1637. testdata_sets[dataset] = SVDFSettings(dataset,
  1638. type_of_test,
  1639. regenerate_weights,
  1640. regenerate_input,
  1641. regenerate_biases,
  1642. schema_file,
  1643. batches=2,
  1644. number_inputs=2,
  1645. rank=8,
  1646. memory_size=8,
  1647. input_size=3,
  1648. number_units=3,
  1649. interpreter=interpreter)
  1650. dataset = 'svdf_1'
  1651. testdata_sets[dataset] = SVDFSettings(dataset,
  1652. type_of_test,
  1653. regenerate_weights,
  1654. regenerate_input,
  1655. regenerate_biases,
  1656. schema_file,
  1657. batches=3,
  1658. number_inputs=2,
  1659. rank=1,
  1660. memory_size=2,
  1661. input_size=7,
  1662. number_units=5,
  1663. interpreter=interpreter)
  1664. dataset = 'svdf_2'
  1665. testdata_sets[dataset] = SVDFSettings(dataset,
  1666. type_of_test,
  1667. regenerate_weights,
  1668. regenerate_input,
  1669. regenerate_biases,
  1670. schema_file,
  1671. batches=3,
  1672. number_inputs=2,
  1673. rank=2,
  1674. memory_size=2,
  1675. input_size=7,
  1676. number_units=5,
  1677. generate_bias=False,
  1678. interpreter=interpreter)
  1679. dataset = 'svdf_3'
  1680. testdata_sets[dataset] = SVDFSettings(dataset,
  1681. type_of_test,
  1682. regenerate_weights,
  1683. regenerate_input,
  1684. regenerate_biases,
  1685. schema_file,
  1686. batches=1,
  1687. number_inputs=2,
  1688. rank=1,
  1689. memory_size=2,
  1690. input_size=20,
  1691. number_units=12,
  1692. generate_bias=False,
  1693. interpreter=interpreter)
  1694. dataset = 'svdf_int8'
  1695. testdata_sets[dataset] = SVDFSettings(dataset,
  1696. type_of_test,
  1697. regenerate_weights,
  1698. regenerate_input,
  1699. regenerate_biases,
  1700. schema_file,
  1701. batches=1,
  1702. number_inputs=2,
  1703. rank=1,
  1704. memory_size=2,
  1705. input_size=20,
  1706. number_units=12,
  1707. generate_bias=False,
  1708. int8_time_weights=True,
  1709. interpreter=interpreter)
  1710. type_of_test = 'add'
  1711. dataset = 'add'
  1712. testdata_sets[dataset] = AddMulSettings(dataset,
  1713. type_of_test,
  1714. regenerate_weights,
  1715. regenerate_input,
  1716. regenerate_biases,
  1717. schema_file,
  1718. channels=8,
  1719. x_in=4,
  1720. y_in=4,
  1721. randmin=TestSettings.INT8_MIN,
  1722. randmax=TestSettings.INT8_MAX,
  1723. interpreter=interpreter)
  1724. dataset = 'add_s16'
  1725. testdata_sets[dataset] = AddMulSettings(dataset,
  1726. type_of_test,
  1727. regenerate_weights,
  1728. regenerate_input,
  1729. regenerate_biases,
  1730. schema_file,
  1731. channels=8,
  1732. x_in=4,
  1733. y_in=4,
  1734. randmin=TestSettings.INT16_MIN,
  1735. randmax=TestSettings.INT16_MAX,
  1736. out_activation_min=TestSettings.INT16_MIN,
  1737. out_activation_max=TestSettings.INT16_MAX,
  1738. int16xint8=True,
  1739. interpreter=interpreter)
  1740. dataset = 'add_s16_spill'
  1741. testdata_sets[dataset] = AddMulSettings(dataset,
  1742. type_of_test,
  1743. regenerate_weights,
  1744. regenerate_input,
  1745. regenerate_biases,
  1746. schema_file,
  1747. channels=7,
  1748. x_in=5,
  1749. y_in=3,
  1750. randmin=TestSettings.INT16_MIN,
  1751. randmax=TestSettings.INT16_MAX,
  1752. out_activation_min=-2000,
  1753. out_activation_max=TestSettings.INT16_MAX,
  1754. int16xint8=True,
  1755. interpreter=interpreter)
  1756. type_of_test = 'mul'
  1757. dataset = 'mul'
  1758. testdata_sets[dataset] = AddMulSettings(dataset,
  1759. type_of_test,
  1760. regenerate_weights,
  1761. regenerate_input,
  1762. regenerate_biases,
  1763. schema_file,
  1764. channels=8,
  1765. x_in=4,
  1766. y_in=5,
  1767. randmin=TestSettings.INT8_MIN,
  1768. randmax=TestSettings.INT8_MAX,
  1769. interpreter=interpreter)
  1770. dataset = 'mul_s16'
  1771. testdata_sets[dataset] = AddMulSettings(dataset,
  1772. type_of_test,
  1773. regenerate_weights,
  1774. regenerate_input,
  1775. regenerate_biases,
  1776. schema_file,
  1777. channels=8,
  1778. x_in=5,
  1779. y_in=4,
  1780. randmin=TestSettings.INT16_MIN,
  1781. randmax=TestSettings.INT16_MAX,
  1782. out_activation_min=TestSettings.INT16_MIN,
  1783. out_activation_max=TestSettings.INT16_MAX,
  1784. int16xint8=True,
  1785. interpreter=interpreter)
  1786. dataset = 'mul_s16_spill'
  1787. testdata_sets[dataset] = AddMulSettings(dataset,
  1788. type_of_test,
  1789. regenerate_weights,
  1790. regenerate_input,
  1791. regenerate_biases,
  1792. schema_file,
  1793. channels=7,
  1794. x_in=5,
  1795. y_in=7,
  1796. randmin=TestSettings.INT16_MIN,
  1797. randmax=TestSettings.INT16_MAX,
  1798. out_activation_min=TestSettings.INT16_MIN,
  1799. out_activation_max=1000,
  1800. int16xint8=True,
  1801. interpreter=interpreter)
  1802. type_of_test = 'lstm'
  1803. dataset = 'lstm_1'
  1804. testdata_sets[dataset] = LSTMSettings(dataset,
  1805. type_of_test,
  1806. regenerate_weights,
  1807. regenerate_input,
  1808. regenerate_biases,
  1809. schema_file,
  1810. batches=1,
  1811. time_steps=10,
  1812. number_inputs=22,
  1813. number_units=11,
  1814. time_major=True,
  1815. interpreter=interpreter)
  1816. dataset = 'lstm_2'
  1817. testdata_sets[dataset] = LSTMSettings(dataset,
  1818. type_of_test,
  1819. regenerate_weights,
  1820. regenerate_input,
  1821. regenerate_biases,
  1822. schema_file,
  1823. batches=2,
  1824. time_steps=9,
  1825. number_inputs=6,
  1826. number_units=7,
  1827. time_major=False,
  1828. interpreter=interpreter)
  1829. dataset = 'lstm_one_time_step'
  1830. testdata_sets[dataset] = LSTMSettings(dataset,
  1831. type_of_test,
  1832. regenerate_weights,
  1833. regenerate_input,
  1834. regenerate_biases,
  1835. schema_file,
  1836. batches=3,
  1837. time_steps=1,
  1838. number_inputs=22,
  1839. number_units=3,
  1840. time_major=False,
  1841. interpreter=interpreter)
  1842. return testdata_sets
  1843. def main():
  1844. if version.parse(tf.__version__) < TestSettings.REQUIRED_MINIMUM_TENSORFLOW_VERSION:
  1845. print("Unsupported tensorflow version, ", version.parse(tf.__version__))
  1846. return 1
  1847. args = parse_args()
  1848. testdataset = args.dataset
  1849. test_type = args.testtype
  1850. schema_file = args.schema_file
  1851. regenerate_input = args.regenerate_input
  1852. regenerate_weights = args.regenerate_weights
  1853. regenerate_biases = args.regenerate_biases
  1854. if args.regenerate_all:
  1855. regenerate_biases = True
  1856. regenerate_weights = True
  1857. regenerate_input = True
  1858. testdata_sets = load_testdata_sets(regenerate_input,
  1859. regenerate_weights,
  1860. regenerate_biases,
  1861. schema_file,
  1862. args.interpreter)
  1863. if args.run_all_testsets:
  1864. for testset_name, testset_generator in testdata_sets.items():
  1865. if test_type and testset_generator.test_type != test_type:
  1866. continue
  1867. print("Generating testset {}..".format(testset_name))
  1868. testset_generator.generate_data()
  1869. print()
  1870. # Check that all testsets have been loaded.
  1871. found_test_data_sets = []
  1872. directory = 'TestCases/TestData'
  1873. for dir in next(os.walk(directory))[1]:
  1874. found_test_data_sets.append(dir)
  1875. for testset_name in found_test_data_sets:
  1876. if testset_name not in testdata_sets:
  1877. print("WARNING: Testset {} in {} was not loaded".format(testset_name, directory))
  1878. elif testdataset:
  1879. try:
  1880. generator = testdata_sets[testdataset]
  1881. except KeyError:
  1882. print("WARNING: testset {} not in testset list".format(testdataset))
  1883. if test_type == 'conv' or test_type == 'depthwise_conv':
  1884. generator = ConvSettings(testdataset, test_type, True, True, True, schema_file)
  1885. elif test_type == 'fully_connected':
  1886. generator = FullyConnectedSettings(testdataset, test_type, True, True, True, schema_file)
  1887. elif test_type == 'avgpool' or test_type == 'maxpool':
  1888. generator = PoolingSettings(testdataset, test_type, True, True, True, schema_file)
  1889. elif test_type == 'softmax':
  1890. generator = SoftmaxSettings(testdataset, test_type, True, True, True, schema_file)
  1891. elif test_type == 'svdf':
  1892. generator = SVDFSettings(testdataset, test_type, True, True, True, schema_file)
  1893. elif test_type == 'add' or test_type == 'mul':
  1894. generator = AddMulSettings(testdataset, test_type, True, True, True, schema_file)
  1895. elif test_type == 'lstm':
  1896. generator = LSTMSettings(testdataset, test_type, True, True, True, schema_file)
  1897. else:
  1898. raise RuntimeError("Please specify type of test with -t")
  1899. generator.generate_data()
  1900. else:
  1901. raise RuntimeError("Please select testdataset or use --run-all-testsets")
  1902. return 0
  1903. if __name__ == '__main__':
  1904. sys.exit(main())