keras-hub-nightly 0.15.0.dev20240823171555__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. keras_hub/__init__.py +52 -0
  2. keras_hub/api/__init__.py +27 -0
  3. keras_hub/api/layers/__init__.py +47 -0
  4. keras_hub/api/metrics/__init__.py +24 -0
  5. keras_hub/api/models/__init__.py +249 -0
  6. keras_hub/api/samplers/__init__.py +29 -0
  7. keras_hub/api/tokenizers/__init__.py +35 -0
  8. keras_hub/src/__init__.py +13 -0
  9. keras_hub/src/api_export.py +53 -0
  10. keras_hub/src/layers/__init__.py +13 -0
  11. keras_hub/src/layers/modeling/__init__.py +13 -0
  12. keras_hub/src/layers/modeling/alibi_bias.py +143 -0
  13. keras_hub/src/layers/modeling/cached_multi_head_attention.py +137 -0
  14. keras_hub/src/layers/modeling/f_net_encoder.py +200 -0
  15. keras_hub/src/layers/modeling/masked_lm_head.py +239 -0
  16. keras_hub/src/layers/modeling/position_embedding.py +123 -0
  17. keras_hub/src/layers/modeling/reversible_embedding.py +311 -0
  18. keras_hub/src/layers/modeling/rotary_embedding.py +169 -0
  19. keras_hub/src/layers/modeling/sine_position_encoding.py +108 -0
  20. keras_hub/src/layers/modeling/token_and_position_embedding.py +150 -0
  21. keras_hub/src/layers/modeling/transformer_decoder.py +496 -0
  22. keras_hub/src/layers/modeling/transformer_encoder.py +262 -0
  23. keras_hub/src/layers/modeling/transformer_layer_utils.py +106 -0
  24. keras_hub/src/layers/preprocessing/__init__.py +13 -0
  25. keras_hub/src/layers/preprocessing/masked_lm_mask_generator.py +220 -0
  26. keras_hub/src/layers/preprocessing/multi_segment_packer.py +319 -0
  27. keras_hub/src/layers/preprocessing/preprocessing_layer.py +62 -0
  28. keras_hub/src/layers/preprocessing/random_deletion.py +271 -0
  29. keras_hub/src/layers/preprocessing/random_swap.py +267 -0
  30. keras_hub/src/layers/preprocessing/start_end_packer.py +219 -0
  31. keras_hub/src/metrics/__init__.py +13 -0
  32. keras_hub/src/metrics/bleu.py +394 -0
  33. keras_hub/src/metrics/edit_distance.py +197 -0
  34. keras_hub/src/metrics/perplexity.py +181 -0
  35. keras_hub/src/metrics/rouge_base.py +204 -0
  36. keras_hub/src/metrics/rouge_l.py +97 -0
  37. keras_hub/src/metrics/rouge_n.py +125 -0
  38. keras_hub/src/models/__init__.py +13 -0
  39. keras_hub/src/models/albert/__init__.py +20 -0
  40. keras_hub/src/models/albert/albert_backbone.py +267 -0
  41. keras_hub/src/models/albert/albert_classifier.py +202 -0
  42. keras_hub/src/models/albert/albert_masked_lm.py +129 -0
  43. keras_hub/src/models/albert/albert_masked_lm_preprocessor.py +194 -0
  44. keras_hub/src/models/albert/albert_preprocessor.py +206 -0
  45. keras_hub/src/models/albert/albert_presets.py +70 -0
  46. keras_hub/src/models/albert/albert_tokenizer.py +119 -0
  47. keras_hub/src/models/backbone.py +311 -0
  48. keras_hub/src/models/bart/__init__.py +20 -0
  49. keras_hub/src/models/bart/bart_backbone.py +261 -0
  50. keras_hub/src/models/bart/bart_preprocessor.py +276 -0
  51. keras_hub/src/models/bart/bart_presets.py +74 -0
  52. keras_hub/src/models/bart/bart_seq_2_seq_lm.py +490 -0
  53. keras_hub/src/models/bart/bart_seq_2_seq_lm_preprocessor.py +262 -0
  54. keras_hub/src/models/bart/bart_tokenizer.py +124 -0
  55. keras_hub/src/models/bert/__init__.py +23 -0
  56. keras_hub/src/models/bert/bert_backbone.py +227 -0
  57. keras_hub/src/models/bert/bert_classifier.py +183 -0
  58. keras_hub/src/models/bert/bert_masked_lm.py +131 -0
  59. keras_hub/src/models/bert/bert_masked_lm_preprocessor.py +198 -0
  60. keras_hub/src/models/bert/bert_preprocessor.py +184 -0
  61. keras_hub/src/models/bert/bert_presets.py +147 -0
  62. keras_hub/src/models/bert/bert_tokenizer.py +112 -0
  63. keras_hub/src/models/bloom/__init__.py +20 -0
  64. keras_hub/src/models/bloom/bloom_attention.py +186 -0
  65. keras_hub/src/models/bloom/bloom_backbone.py +173 -0
  66. keras_hub/src/models/bloom/bloom_causal_lm.py +298 -0
  67. keras_hub/src/models/bloom/bloom_causal_lm_preprocessor.py +176 -0
  68. keras_hub/src/models/bloom/bloom_decoder.py +206 -0
  69. keras_hub/src/models/bloom/bloom_preprocessor.py +185 -0
  70. keras_hub/src/models/bloom/bloom_presets.py +121 -0
  71. keras_hub/src/models/bloom/bloom_tokenizer.py +116 -0
  72. keras_hub/src/models/causal_lm.py +383 -0
  73. keras_hub/src/models/classifier.py +109 -0
  74. keras_hub/src/models/csp_darknet/__init__.py +13 -0
  75. keras_hub/src/models/csp_darknet/csp_darknet_backbone.py +410 -0
  76. keras_hub/src/models/csp_darknet/csp_darknet_image_classifier.py +133 -0
  77. keras_hub/src/models/deberta_v3/__init__.py +24 -0
  78. keras_hub/src/models/deberta_v3/deberta_v3_backbone.py +210 -0
  79. keras_hub/src/models/deberta_v3/deberta_v3_classifier.py +228 -0
  80. keras_hub/src/models/deberta_v3/deberta_v3_masked_lm.py +135 -0
  81. keras_hub/src/models/deberta_v3/deberta_v3_masked_lm_preprocessor.py +191 -0
  82. keras_hub/src/models/deberta_v3/deberta_v3_preprocessor.py +206 -0
  83. keras_hub/src/models/deberta_v3/deberta_v3_presets.py +82 -0
  84. keras_hub/src/models/deberta_v3/deberta_v3_tokenizer.py +155 -0
  85. keras_hub/src/models/deberta_v3/disentangled_attention_encoder.py +227 -0
  86. keras_hub/src/models/deberta_v3/disentangled_self_attention.py +412 -0
  87. keras_hub/src/models/deberta_v3/relative_embedding.py +94 -0
  88. keras_hub/src/models/densenet/__init__.py +13 -0
  89. keras_hub/src/models/densenet/densenet_backbone.py +210 -0
  90. keras_hub/src/models/densenet/densenet_image_classifier.py +131 -0
  91. keras_hub/src/models/distil_bert/__init__.py +26 -0
  92. keras_hub/src/models/distil_bert/distil_bert_backbone.py +187 -0
  93. keras_hub/src/models/distil_bert/distil_bert_classifier.py +208 -0
  94. keras_hub/src/models/distil_bert/distil_bert_masked_lm.py +137 -0
  95. keras_hub/src/models/distil_bert/distil_bert_masked_lm_preprocessor.py +194 -0
  96. keras_hub/src/models/distil_bert/distil_bert_preprocessor.py +175 -0
  97. keras_hub/src/models/distil_bert/distil_bert_presets.py +57 -0
  98. keras_hub/src/models/distil_bert/distil_bert_tokenizer.py +114 -0
  99. keras_hub/src/models/electra/__init__.py +20 -0
  100. keras_hub/src/models/electra/electra_backbone.py +247 -0
  101. keras_hub/src/models/electra/electra_preprocessor.py +154 -0
  102. keras_hub/src/models/electra/electra_presets.py +95 -0
  103. keras_hub/src/models/electra/electra_tokenizer.py +104 -0
  104. keras_hub/src/models/f_net/__init__.py +20 -0
  105. keras_hub/src/models/f_net/f_net_backbone.py +236 -0
  106. keras_hub/src/models/f_net/f_net_classifier.py +154 -0
  107. keras_hub/src/models/f_net/f_net_masked_lm.py +132 -0
  108. keras_hub/src/models/f_net/f_net_masked_lm_preprocessor.py +196 -0
  109. keras_hub/src/models/f_net/f_net_preprocessor.py +177 -0
  110. keras_hub/src/models/f_net/f_net_presets.py +43 -0
  111. keras_hub/src/models/f_net/f_net_tokenizer.py +95 -0
  112. keras_hub/src/models/falcon/__init__.py +20 -0
  113. keras_hub/src/models/falcon/falcon_attention.py +156 -0
  114. keras_hub/src/models/falcon/falcon_backbone.py +164 -0
  115. keras_hub/src/models/falcon/falcon_causal_lm.py +291 -0
  116. keras_hub/src/models/falcon/falcon_causal_lm_preprocessor.py +173 -0
  117. keras_hub/src/models/falcon/falcon_preprocessor.py +187 -0
  118. keras_hub/src/models/falcon/falcon_presets.py +30 -0
  119. keras_hub/src/models/falcon/falcon_tokenizer.py +110 -0
  120. keras_hub/src/models/falcon/falcon_transformer_decoder.py +255 -0
  121. keras_hub/src/models/feature_pyramid_backbone.py +73 -0
  122. keras_hub/src/models/gemma/__init__.py +20 -0
  123. keras_hub/src/models/gemma/gemma_attention.py +250 -0
  124. keras_hub/src/models/gemma/gemma_backbone.py +316 -0
  125. keras_hub/src/models/gemma/gemma_causal_lm.py +448 -0
  126. keras_hub/src/models/gemma/gemma_causal_lm_preprocessor.py +167 -0
  127. keras_hub/src/models/gemma/gemma_decoder_block.py +241 -0
  128. keras_hub/src/models/gemma/gemma_preprocessor.py +191 -0
  129. keras_hub/src/models/gemma/gemma_presets.py +248 -0
  130. keras_hub/src/models/gemma/gemma_tokenizer.py +103 -0
  131. keras_hub/src/models/gemma/rms_normalization.py +40 -0
  132. keras_hub/src/models/gpt2/__init__.py +20 -0
  133. keras_hub/src/models/gpt2/gpt2_backbone.py +199 -0
  134. keras_hub/src/models/gpt2/gpt2_causal_lm.py +437 -0
  135. keras_hub/src/models/gpt2/gpt2_causal_lm_preprocessor.py +173 -0
  136. keras_hub/src/models/gpt2/gpt2_preprocessor.py +187 -0
  137. keras_hub/src/models/gpt2/gpt2_presets.py +82 -0
  138. keras_hub/src/models/gpt2/gpt2_tokenizer.py +110 -0
  139. keras_hub/src/models/gpt_neo_x/__init__.py +13 -0
  140. keras_hub/src/models/gpt_neo_x/gpt_neo_x_attention.py +251 -0
  141. keras_hub/src/models/gpt_neo_x/gpt_neo_x_backbone.py +175 -0
  142. keras_hub/src/models/gpt_neo_x/gpt_neo_x_causal_lm.py +201 -0
  143. keras_hub/src/models/gpt_neo_x/gpt_neo_x_causal_lm_preprocessor.py +141 -0
  144. keras_hub/src/models/gpt_neo_x/gpt_neo_x_decoder.py +258 -0
  145. keras_hub/src/models/gpt_neo_x/gpt_neo_x_preprocessor.py +145 -0
  146. keras_hub/src/models/gpt_neo_x/gpt_neo_x_tokenizer.py +88 -0
  147. keras_hub/src/models/image_classifier.py +90 -0
  148. keras_hub/src/models/llama/__init__.py +20 -0
  149. keras_hub/src/models/llama/llama_attention.py +225 -0
  150. keras_hub/src/models/llama/llama_backbone.py +188 -0
  151. keras_hub/src/models/llama/llama_causal_lm.py +327 -0
  152. keras_hub/src/models/llama/llama_causal_lm_preprocessor.py +170 -0
  153. keras_hub/src/models/llama/llama_decoder.py +246 -0
  154. keras_hub/src/models/llama/llama_layernorm.py +48 -0
  155. keras_hub/src/models/llama/llama_preprocessor.py +189 -0
  156. keras_hub/src/models/llama/llama_presets.py +80 -0
  157. keras_hub/src/models/llama/llama_tokenizer.py +84 -0
  158. keras_hub/src/models/llama3/__init__.py +20 -0
  159. keras_hub/src/models/llama3/llama3_backbone.py +84 -0
  160. keras_hub/src/models/llama3/llama3_causal_lm.py +46 -0
  161. keras_hub/src/models/llama3/llama3_causal_lm_preprocessor.py +173 -0
  162. keras_hub/src/models/llama3/llama3_preprocessor.py +21 -0
  163. keras_hub/src/models/llama3/llama3_presets.py +69 -0
  164. keras_hub/src/models/llama3/llama3_tokenizer.py +63 -0
  165. keras_hub/src/models/masked_lm.py +101 -0
  166. keras_hub/src/models/mistral/__init__.py +20 -0
  167. keras_hub/src/models/mistral/mistral_attention.py +238 -0
  168. keras_hub/src/models/mistral/mistral_backbone.py +203 -0
  169. keras_hub/src/models/mistral/mistral_causal_lm.py +328 -0
  170. keras_hub/src/models/mistral/mistral_causal_lm_preprocessor.py +175 -0
  171. keras_hub/src/models/mistral/mistral_layer_norm.py +48 -0
  172. keras_hub/src/models/mistral/mistral_preprocessor.py +190 -0
  173. keras_hub/src/models/mistral/mistral_presets.py +48 -0
  174. keras_hub/src/models/mistral/mistral_tokenizer.py +82 -0
  175. keras_hub/src/models/mistral/mistral_transformer_decoder.py +265 -0
  176. keras_hub/src/models/mix_transformer/__init__.py +13 -0
  177. keras_hub/src/models/mix_transformer/mix_transformer_backbone.py +181 -0
  178. keras_hub/src/models/mix_transformer/mix_transformer_classifier.py +133 -0
  179. keras_hub/src/models/mix_transformer/mix_transformer_layers.py +300 -0
  180. keras_hub/src/models/opt/__init__.py +20 -0
  181. keras_hub/src/models/opt/opt_backbone.py +173 -0
  182. keras_hub/src/models/opt/opt_causal_lm.py +301 -0
  183. keras_hub/src/models/opt/opt_causal_lm_preprocessor.py +177 -0
  184. keras_hub/src/models/opt/opt_preprocessor.py +188 -0
  185. keras_hub/src/models/opt/opt_presets.py +72 -0
  186. keras_hub/src/models/opt/opt_tokenizer.py +116 -0
  187. keras_hub/src/models/pali_gemma/__init__.py +23 -0
  188. keras_hub/src/models/pali_gemma/pali_gemma_backbone.py +277 -0
  189. keras_hub/src/models/pali_gemma/pali_gemma_causal_lm.py +313 -0
  190. keras_hub/src/models/pali_gemma/pali_gemma_causal_lm_preprocessor.py +147 -0
  191. keras_hub/src/models/pali_gemma/pali_gemma_decoder_block.py +160 -0
  192. keras_hub/src/models/pali_gemma/pali_gemma_presets.py +78 -0
  193. keras_hub/src/models/pali_gemma/pali_gemma_tokenizer.py +79 -0
  194. keras_hub/src/models/pali_gemma/pali_gemma_vit.py +566 -0
  195. keras_hub/src/models/phi3/__init__.py +20 -0
  196. keras_hub/src/models/phi3/phi3_attention.py +260 -0
  197. keras_hub/src/models/phi3/phi3_backbone.py +224 -0
  198. keras_hub/src/models/phi3/phi3_causal_lm.py +218 -0
  199. keras_hub/src/models/phi3/phi3_causal_lm_preprocessor.py +173 -0
  200. keras_hub/src/models/phi3/phi3_decoder.py +260 -0
  201. keras_hub/src/models/phi3/phi3_layernorm.py +48 -0
  202. keras_hub/src/models/phi3/phi3_preprocessor.py +190 -0
  203. keras_hub/src/models/phi3/phi3_presets.py +50 -0
  204. keras_hub/src/models/phi3/phi3_rotary_embedding.py +137 -0
  205. keras_hub/src/models/phi3/phi3_tokenizer.py +94 -0
  206. keras_hub/src/models/preprocessor.py +207 -0
  207. keras_hub/src/models/resnet/__init__.py +13 -0
  208. keras_hub/src/models/resnet/resnet_backbone.py +612 -0
  209. keras_hub/src/models/resnet/resnet_image_classifier.py +136 -0
  210. keras_hub/src/models/roberta/__init__.py +20 -0
  211. keras_hub/src/models/roberta/roberta_backbone.py +184 -0
  212. keras_hub/src/models/roberta/roberta_classifier.py +209 -0
  213. keras_hub/src/models/roberta/roberta_masked_lm.py +136 -0
  214. keras_hub/src/models/roberta/roberta_masked_lm_preprocessor.py +198 -0
  215. keras_hub/src/models/roberta/roberta_preprocessor.py +192 -0
  216. keras_hub/src/models/roberta/roberta_presets.py +43 -0
  217. keras_hub/src/models/roberta/roberta_tokenizer.py +132 -0
  218. keras_hub/src/models/seq_2_seq_lm.py +54 -0
  219. keras_hub/src/models/t5/__init__.py +20 -0
  220. keras_hub/src/models/t5/t5_backbone.py +261 -0
  221. keras_hub/src/models/t5/t5_layer_norm.py +35 -0
  222. keras_hub/src/models/t5/t5_multi_head_attention.py +324 -0
  223. keras_hub/src/models/t5/t5_presets.py +95 -0
  224. keras_hub/src/models/t5/t5_tokenizer.py +100 -0
  225. keras_hub/src/models/t5/t5_transformer_layer.py +178 -0
  226. keras_hub/src/models/task.py +419 -0
  227. keras_hub/src/models/vgg/__init__.py +13 -0
  228. keras_hub/src/models/vgg/vgg_backbone.py +158 -0
  229. keras_hub/src/models/vgg/vgg_image_classifier.py +124 -0
  230. keras_hub/src/models/vit_det/__init__.py +13 -0
  231. keras_hub/src/models/vit_det/vit_det_backbone.py +204 -0
  232. keras_hub/src/models/vit_det/vit_layers.py +565 -0
  233. keras_hub/src/models/whisper/__init__.py +20 -0
  234. keras_hub/src/models/whisper/whisper_audio_feature_extractor.py +260 -0
  235. keras_hub/src/models/whisper/whisper_backbone.py +305 -0
  236. keras_hub/src/models/whisper/whisper_cached_multi_head_attention.py +153 -0
  237. keras_hub/src/models/whisper/whisper_decoder.py +141 -0
  238. keras_hub/src/models/whisper/whisper_encoder.py +106 -0
  239. keras_hub/src/models/whisper/whisper_preprocessor.py +326 -0
  240. keras_hub/src/models/whisper/whisper_presets.py +148 -0
  241. keras_hub/src/models/whisper/whisper_tokenizer.py +163 -0
  242. keras_hub/src/models/xlm_roberta/__init__.py +26 -0
  243. keras_hub/src/models/xlm_roberta/xlm_roberta_backbone.py +81 -0
  244. keras_hub/src/models/xlm_roberta/xlm_roberta_classifier.py +225 -0
  245. keras_hub/src/models/xlm_roberta/xlm_roberta_masked_lm.py +141 -0
  246. keras_hub/src/models/xlm_roberta/xlm_roberta_masked_lm_preprocessor.py +195 -0
  247. keras_hub/src/models/xlm_roberta/xlm_roberta_preprocessor.py +205 -0
  248. keras_hub/src/models/xlm_roberta/xlm_roberta_presets.py +43 -0
  249. keras_hub/src/models/xlm_roberta/xlm_roberta_tokenizer.py +191 -0
  250. keras_hub/src/models/xlnet/__init__.py +13 -0
  251. keras_hub/src/models/xlnet/relative_attention.py +459 -0
  252. keras_hub/src/models/xlnet/xlnet_backbone.py +222 -0
  253. keras_hub/src/models/xlnet/xlnet_content_and_query_embedding.py +133 -0
  254. keras_hub/src/models/xlnet/xlnet_encoder.py +378 -0
  255. keras_hub/src/samplers/__init__.py +13 -0
  256. keras_hub/src/samplers/beam_sampler.py +207 -0
  257. keras_hub/src/samplers/contrastive_sampler.py +231 -0
  258. keras_hub/src/samplers/greedy_sampler.py +50 -0
  259. keras_hub/src/samplers/random_sampler.py +77 -0
  260. keras_hub/src/samplers/sampler.py +237 -0
  261. keras_hub/src/samplers/serialization.py +97 -0
  262. keras_hub/src/samplers/top_k_sampler.py +92 -0
  263. keras_hub/src/samplers/top_p_sampler.py +113 -0
  264. keras_hub/src/tests/__init__.py +13 -0
  265. keras_hub/src/tests/test_case.py +608 -0
  266. keras_hub/src/tokenizers/__init__.py +13 -0
  267. keras_hub/src/tokenizers/byte_pair_tokenizer.py +638 -0
  268. keras_hub/src/tokenizers/byte_tokenizer.py +299 -0
  269. keras_hub/src/tokenizers/sentence_piece_tokenizer.py +267 -0
  270. keras_hub/src/tokenizers/sentence_piece_tokenizer_trainer.py +150 -0
  271. keras_hub/src/tokenizers/tokenizer.py +235 -0
  272. keras_hub/src/tokenizers/unicode_codepoint_tokenizer.py +355 -0
  273. keras_hub/src/tokenizers/word_piece_tokenizer.py +544 -0
  274. keras_hub/src/tokenizers/word_piece_tokenizer_trainer.py +176 -0
  275. keras_hub/src/utils/__init__.py +13 -0
  276. keras_hub/src/utils/keras_utils.py +130 -0
  277. keras_hub/src/utils/pipeline_model.py +293 -0
  278. keras_hub/src/utils/preset_utils.py +621 -0
  279. keras_hub/src/utils/python_utils.py +21 -0
  280. keras_hub/src/utils/tensor_utils.py +206 -0
  281. keras_hub/src/utils/timm/__init__.py +13 -0
  282. keras_hub/src/utils/timm/convert.py +37 -0
  283. keras_hub/src/utils/timm/convert_resnet.py +171 -0
  284. keras_hub/src/utils/transformers/__init__.py +13 -0
  285. keras_hub/src/utils/transformers/convert.py +101 -0
  286. keras_hub/src/utils/transformers/convert_bert.py +173 -0
  287. keras_hub/src/utils/transformers/convert_distilbert.py +184 -0
  288. keras_hub/src/utils/transformers/convert_gemma.py +187 -0
  289. keras_hub/src/utils/transformers/convert_gpt2.py +186 -0
  290. keras_hub/src/utils/transformers/convert_llama3.py +136 -0
  291. keras_hub/src/utils/transformers/convert_pali_gemma.py +303 -0
  292. keras_hub/src/utils/transformers/safetensor_utils.py +97 -0
  293. keras_hub/src/version_utils.py +23 -0
  294. keras_hub_nightly-0.15.0.dev20240823171555.dist-info/METADATA +34 -0
  295. keras_hub_nightly-0.15.0.dev20240823171555.dist-info/RECORD +297 -0
  296. keras_hub_nightly-0.15.0.dev20240823171555.dist-info/WHEEL +5 -0
  297. keras_hub_nightly-0.15.0.dev20240823171555.dist-info/top_level.txt +1 -0
@@ -0,0 +1,410 @@
1
+ # Copyright 2024 The KerasHub Authors
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ import keras
15
+ from keras import layers
16
+
17
+ from keras_hub.src.api_export import keras_hub_export
18
+ from keras_hub.src.models.backbone import Backbone
19
+
20
+
21
+ @keras_hub_export("keras_hub.models.CSPDarkNetBackbone")
22
+ class CSPDarkNetBackbone(Backbone):
23
+ """This class represents Keras Backbone of CSPDarkNet model.
24
+
25
+ This class implements a CSPDarkNet backbone as described in
26
+ [CSPNet: A New Backbone that can Enhance Learning Capability of CNN](
27
+ https://arxiv.org/abs/1911.11929).
28
+
29
+ Args:
30
+ stackwise_num_filters: A list of ints, filter size for each dark
31
+ level in the model.
32
+ stackwise_depth: A list of ints, the depth for each dark level in the
33
+ model.
34
+ include_rescaling: boolean. If `True`, rescale the input using
35
+ `Rescaling(1 / 255.0)` layer. If `False`, do nothing. Defaults to
36
+ `True`.
37
+ block_type: str. One of `"basic_block"` or `"depthwise_block"`.
38
+ Use `"depthwise_block"` for depthwise conv block
39
+ `"basic_block"` for basic conv block.
40
+ Defaults to "basic_block".
41
+ image_shape: tuple. The input shape without the batch size.
42
+ Defaults to `(None, None, 3)`.
43
+
44
+ Examples:
45
+ ```python
46
+ input_data = np.ones(shape=(8, 224, 224, 3))
47
+
48
+ # Pretrained backbone
49
+ model = keras_hub.models.CSPDarkNetBackbone.from_preset(
50
+ "csp_darknet_tiny_imagenet"
51
+ )
52
+ model(input_data)
53
+
54
+ # Randomly initialized backbone with a custom config
55
+ model = keras_hub.models.CSPDarkNetBackbone(
56
+ stackwise_num_filters=[128, 256, 512, 1024],
57
+ stackwise_depth=[3, 9, 9, 3],
58
+ include_rescaling=False,
59
+ )
60
+ model(input_data)
61
+ ```
62
+ """
63
+
64
+ def __init__(
65
+ self,
66
+ stackwise_num_filters,
67
+ stackwise_depth,
68
+ include_rescaling,
69
+ block_type="basic_block",
70
+ image_shape=(224, 224, 3),
71
+ **kwargs,
72
+ ):
73
+ # === Functional Model ===
74
+ apply_ConvBlock = (
75
+ apply_darknet_conv_block_depthwise
76
+ if block_type == "depthwise_block"
77
+ else apply_darknet_conv_block
78
+ )
79
+ base_channels = stackwise_num_filters[0] // 2
80
+
81
+ image_input = layers.Input(shape=image_shape)
82
+ x = image_input
83
+ if include_rescaling:
84
+ x = layers.Rescaling(scale=1 / 255.0)(x)
85
+
86
+ x = apply_focus(name="stem_focus")(x)
87
+ x = apply_darknet_conv_block(
88
+ base_channels, kernel_size=3, strides=1, name="stem_conv"
89
+ )(x)
90
+ for index, (channels, depth) in enumerate(
91
+ zip(stackwise_num_filters, stackwise_depth)
92
+ ):
93
+ x = apply_ConvBlock(
94
+ channels,
95
+ kernel_size=3,
96
+ strides=2,
97
+ name=f"dark{index + 2}_conv",
98
+ )(x)
99
+
100
+ if index == len(stackwise_depth) - 1:
101
+ x = apply_spatial_pyramid_pooling_bottleneck(
102
+ channels,
103
+ hidden_filters=channels // 2,
104
+ name=f"dark{index + 2}_spp",
105
+ )(x)
106
+
107
+ x = apply_cross_stage_partial(
108
+ channels,
109
+ num_bottlenecks=depth,
110
+ block_type="basic_block",
111
+ residual=(index != len(stackwise_depth) - 1),
112
+ name=f"dark{index + 2}_csp",
113
+ )(x)
114
+
115
+ super().__init__(inputs=image_input, outputs=x, **kwargs)
116
+
117
+ # === Config ===
118
+ self.stackwise_num_filters = stackwise_num_filters
119
+ self.stackwise_depth = stackwise_depth
120
+ self.include_rescaling = include_rescaling
121
+ self.block_type = block_type
122
+ self.image_shape = image_shape
123
+
124
+ def get_config(self):
125
+ config = super().get_config()
126
+ config.update(
127
+ {
128
+ "stackwise_num_filters": self.stackwise_num_filters,
129
+ "stackwise_depth": self.stackwise_depth,
130
+ "include_rescaling": self.include_rescaling,
131
+ "block_type": self.block_type,
132
+ "image_shape": self.image_shape,
133
+ }
134
+ )
135
+ return config
136
+
137
+
138
+ def apply_focus(name=None):
139
+ """A block used in CSPDarknet to focus information into channels of the
140
+ image.
141
+
142
+ If the dimensions of a batch input is (batch_size, width, height, channels),
143
+ this layer converts the image into size (batch_size, width/2, height/2,
144
+ 4*channels). See [the original discussion on YoloV5 Focus Layer](https://github.com/ultralytics/yolov5/discussions/3181).
145
+
146
+ Args:
147
+ name: the name for the lambda layer used in the block.
148
+
149
+ Returns:
150
+ a function that takes an input Tensor representing a Focus layer.
151
+ """
152
+
153
+ def apply(x):
154
+ return layers.Concatenate(name=name)(
155
+ [
156
+ x[..., ::2, ::2, :],
157
+ x[..., 1::2, ::2, :],
158
+ x[..., ::2, 1::2, :],
159
+ x[..., 1::2, 1::2, :],
160
+ ],
161
+ )
162
+
163
+ return apply
164
+
165
+
166
+ def apply_darknet_conv_block(
167
+ filters, kernel_size, strides, use_bias=False, activation="silu", name=None
168
+ ):
169
+ """
170
+ The basic conv block used in Darknet. Applies Conv2D followed by a
171
+ BatchNorm.
172
+
173
+ Args:
174
+ filters: Integer, the dimensionality of the output space (i.e. the
175
+ number of output filters in the convolution).
176
+ kernel_size: An integer or tuple/list of 2 integers, specifying the
177
+ height and width of the 2D convolution window. Can be a single
178
+ integer to specify the same value both dimensions.
179
+ strides: An integer or tuple/list of 2 integers, specifying the strides
180
+ of the convolution along the height and width. Can be a single
181
+ integer to the same value both dimensions.
182
+ use_bias: Boolean, whether the layer uses a bias vector.
183
+ activation: the activation applied after the BatchNorm layer. One of
184
+ "silu", "relu" or "leaky_relu", defaults to "silu".
185
+ name: the prefix for the layer names used in the block.
186
+ """
187
+ if name is None:
188
+ name = f"conv_block{keras.backend.get_uid('conv_block')}"
189
+
190
+ def apply(inputs):
191
+ x = layers.Conv2D(
192
+ filters,
193
+ kernel_size,
194
+ strides,
195
+ padding="same",
196
+ use_bias=use_bias,
197
+ name=name + "_conv",
198
+ )(inputs)
199
+
200
+ x = layers.BatchNormalization(name=name + "_bn")(x)
201
+
202
+ if activation == "silu":
203
+ x = layers.Lambda(lambda x: keras.activations.silu(x))(x)
204
+ elif activation == "relu":
205
+ x = layers.ReLU()(x)
206
+ elif activation == "leaky_relu":
207
+ x = layers.LeakyReLU(0.1)(x)
208
+
209
+ return x
210
+
211
+ return apply
212
+
213
+
214
+ def apply_darknet_conv_block_depthwise(
215
+ filters, kernel_size, strides, activation="silu", name=None
216
+ ):
217
+ """
218
+ The depthwise conv block used in CSPDarknet.
219
+
220
+ Args:
221
+ filters: Integer, the dimensionality of the output space (i.e. the
222
+ number of output filters in the final convolution).
223
+ kernel_size: An integer or tuple/list of 2 integers, specifying the
224
+ height and width of the 2D convolution window. Can be a single
225
+ integer to specify the same value both dimensions.
226
+ strides: An integer or tuple/list of 2 integers, specifying the strides
227
+ of the convolution along the height and width. Can be a single
228
+ integer to the same value both dimensions.
229
+ activation: the activation applied after the final layer. One of "silu",
230
+ "relu" or "leaky_relu", defaults to "silu".
231
+ name: the prefix for the layer names used in the block.
232
+
233
+ """
234
+ if name is None:
235
+ name = f"conv_block{keras.backend.get_uid('conv_block')}"
236
+
237
+ def apply(inputs):
238
+ x = layers.DepthwiseConv2D(
239
+ kernel_size, strides, padding="same", use_bias=False
240
+ )(inputs)
241
+ x = layers.BatchNormalization()(x)
242
+
243
+ if activation == "silu":
244
+ x = layers.Lambda(lambda x: keras.activations.swish(x))(x)
245
+ elif activation == "relu":
246
+ x = layers.ReLU()(x)
247
+ elif activation == "leaky_relu":
248
+ x = layers.LeakyReLU(0.1)(x)
249
+
250
+ x = apply_darknet_conv_block(
251
+ filters, kernel_size=1, strides=1, activation=activation
252
+ )(x)
253
+
254
+ return x
255
+
256
+ return apply
257
+
258
+
259
+ def apply_spatial_pyramid_pooling_bottleneck(
260
+ filters,
261
+ hidden_filters=None,
262
+ kernel_sizes=(5, 9, 13),
263
+ activation="silu",
264
+ name=None,
265
+ ):
266
+ """
267
+ Spatial pyramid pooling layer used in YOLOv3-SPP
268
+
269
+ Args:
270
+ filters: Integer, the dimensionality of the output spaces (i.e. the
271
+ number of output filters in used the blocks).
272
+ hidden_filters: Integer, the dimensionality of the intermediate
273
+ bottleneck space (i.e. the number of output filters in the
274
+ bottleneck convolution). If None, it will be equal to filters.
275
+ Defaults to None.
276
+ kernel_sizes: A list or tuple representing all the pool sizes used for
277
+ the pooling layers, defaults to (5, 9, 13).
278
+ activation: Activation for the conv layers, defaults to "silu".
279
+ name: the prefix for the layer names used in the block.
280
+
281
+ Returns:
282
+ a function that takes an input Tensor representing an
283
+ SpatialPyramidPoolingBottleneck.
284
+ """
285
+ if name is None:
286
+ name = f"spp{keras.backend.get_uid('spp')}"
287
+
288
+ if hidden_filters is None:
289
+ hidden_filters = filters
290
+
291
+ def apply(x):
292
+ x = apply_darknet_conv_block(
293
+ hidden_filters,
294
+ kernel_size=1,
295
+ strides=1,
296
+ activation=activation,
297
+ name=f"{name}_conv1",
298
+ )(x)
299
+ x = [x]
300
+
301
+ for kernel_size in kernel_sizes:
302
+ x.append(
303
+ layers.MaxPooling2D(
304
+ kernel_size,
305
+ strides=1,
306
+ padding="same",
307
+ name=f"{name}_maxpool_{kernel_size}",
308
+ )(x[0])
309
+ )
310
+
311
+ x = layers.Concatenate(name=f"{name}_concat")(x)
312
+ x = apply_darknet_conv_block(
313
+ filters,
314
+ kernel_size=1,
315
+ strides=1,
316
+ activation=activation,
317
+ name=f"{name}_conv2",
318
+ )(x)
319
+
320
+ return x
321
+
322
+ return apply
323
+
324
+
325
+ def apply_cross_stage_partial(
326
+ filters,
327
+ num_bottlenecks,
328
+ residual=True,
329
+ block_type="basic_block",
330
+ activation="silu",
331
+ name=None,
332
+ ):
333
+ """A block used in Cross Stage Partial Darknet.
334
+
335
+ Args:
336
+ filters: Integer, the dimensionality of the output space (i.e. the
337
+ number of output filters in the final convolution).
338
+ num_bottlenecks: an integer representing the number of blocks added in
339
+ the layer bottleneck.
340
+ residual: a boolean representing whether the value tensor before the
341
+ bottleneck should be added to the output of the bottleneck as a
342
+ residual, defaults to True.
343
+ block_type: str. One of `"basic_block"` or `"depthwise_block"`.
344
+ Use `"depthwise_block"` for depthwise conv block
345
+ `"basic_block"` for basic conv block.
346
+ Defaults to "basic_block".
347
+ activation: the activation applied after the final layer. One of "silu",
348
+ "relu" or "leaky_relu", defaults to "silu".
349
+ """
350
+
351
+ if name is None:
352
+ name = f"cross_stage_partial_{keras.backend.get_uid('cross_stage_partial')}"
353
+
354
+ def apply(inputs):
355
+ hidden_channels = filters // 2
356
+ ConvBlock = (
357
+ apply_darknet_conv_block_depthwise
358
+ if block_type == "basic_block"
359
+ else apply_darknet_conv_block
360
+ )
361
+
362
+ x1 = apply_darknet_conv_block(
363
+ hidden_channels,
364
+ kernel_size=1,
365
+ strides=1,
366
+ activation=activation,
367
+ name=f"{name}_conv1",
368
+ )(inputs)
369
+
370
+ x2 = apply_darknet_conv_block(
371
+ hidden_channels,
372
+ kernel_size=1,
373
+ strides=1,
374
+ activation=activation,
375
+ name=f"{name}_conv2",
376
+ )(inputs)
377
+
378
+ for i in range(num_bottlenecks):
379
+ residual_x = x1
380
+ x1 = apply_darknet_conv_block(
381
+ hidden_channels,
382
+ kernel_size=1,
383
+ strides=1,
384
+ activation=activation,
385
+ name=f"{name}_bottleneck_{i}_conv1",
386
+ )(x1)
387
+ x1 = ConvBlock(
388
+ hidden_channels,
389
+ kernel_size=3,
390
+ strides=1,
391
+ activation=activation,
392
+ name=f"{name}_bottleneck_{i}_conv2",
393
+ )(x1)
394
+ if residual:
395
+ x1 = layers.Add(name=f"{name}_bottleneck_{i}_add")(
396
+ [residual_x, x1]
397
+ )
398
+
399
+ x = layers.Concatenate(name=f"{name}_concat")([x1, x2])
400
+ x = apply_darknet_conv_block(
401
+ filters,
402
+ kernel_size=1,
403
+ strides=1,
404
+ activation=activation,
405
+ name=f"{name}_conv3",
406
+ )(x)
407
+
408
+ return x
409
+
410
+ return apply
@@ -0,0 +1,133 @@
1
+ # Copyright 2024 The KerasHub Authors
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ import keras
15
+
16
+ from keras_hub.src.api_export import keras_hub_export
17
+ from keras_hub.src.models.csp_darknet.csp_darknet_backbone import (
18
+ CSPDarkNetBackbone,
19
+ )
20
+ from keras_hub.src.models.image_classifier import ImageClassifier
21
+
22
+
23
+ @keras_hub_export("keras_hub.models.CSPDarkNetImageClassifier")
24
+ class CSPDarkNetImageClassifier(ImageClassifier):
25
+ """CSPDarkNet image classifier task model.
26
+
27
+ Args:
28
+ backbone: A `keras_hub.models.CSPDarkNetBackbone` instance.
29
+ num_classes: int. The number of classes to predict.
30
+ activation: `None`, str or callable. The activation function to use on
31
+ the `Dense` layer. Set `activation=None` to return the output
32
+ logits. Defaults to `"softmax"`.
33
+
34
+ To fine-tune with `fit()`, pass a dataset containing tuples of `(x, y)`
35
+ where `x` is a tensor and `y` is a integer from `[0, num_classes)`.
36
+ All `ImageClassifier` tasks include a `from_preset()` constructor which can
37
+ be used to load a pre-trained config and weights.
38
+
39
+ Examples:
40
+
41
+ Call `predict()` to run inference.
42
+ ```python
43
+ # Load preset and train
44
+ images = np.ones((2, 224, 224, 3), dtype="float32")
45
+ classifier = keras_hub.models.CSPDarkNetImageClassifier.from_preset(
46
+ "csp_darknet_tiny_imagenet")
47
+ classifier.predict(images)
48
+ ```
49
+
50
+ Call `fit()` on a single batch.
51
+ ```python
52
+ # Load preset and train
53
+ images = np.ones((2, 224, 224, 3), dtype="float32")
54
+ labels = [0, 3]
55
+ classifier = keras_hub.models.CSPDarkNetImageClassifier.from_preset(
56
+ "csp_darknet_tiny_imagenet")
57
+ classifier.fit(x=images, y=labels, batch_size=2)
58
+ ```
59
+
60
+ Call `fit()` with custom loss, optimizer and backbone.
61
+ ```python
62
+ classifier = keras_hub.models.CSPDarkNetImageClassifier.from_preset(
63
+ "csp_darknet_tiny_imagenet")
64
+ classifier.compile(
65
+ loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),
66
+ optimizer=keras.optimizers.Adam(5e-5),
67
+ )
68
+ classifier.backbone.trainable = False
69
+ classifier.fit(x=images, y=labels, batch_size=2)
70
+ ```
71
+
72
+ Custom backbone.
73
+ ```python
74
+ images = np.ones((2, 224, 224, 3), dtype="float32")
75
+ labels = [0, 3]
76
+ backbone = keras_hub.models.CSPDarkNetBackbone(
77
+ stackwise_num_filters=[128, 256, 512, 1024],
78
+ stackwise_depth=[3, 9, 9, 3],
79
+ include_rescaling=False,
80
+ block_type="basic_block",
81
+ image_shape = (224, 224, 3),
82
+ )
83
+ classifier = keras_hub.models.CSPDarkNetImageClassifier(
84
+ backbone=backbone,
85
+ num_classes=4,
86
+ )
87
+ classifier.fit(x=images, y=labels, batch_size=2)
88
+ ```
89
+ """
90
+
91
+ backbone_cls = CSPDarkNetBackbone
92
+
93
+ def __init__(
94
+ self,
95
+ backbone,
96
+ num_classes,
97
+ activation="softmax",
98
+ preprocessor=None, # adding this dummy arg for saved model test
99
+ # TODO: once preprocessor flow is figured out, this needs to be updated
100
+ **kwargs,
101
+ ):
102
+ # === Layers ===
103
+ self.backbone = backbone
104
+ self.output_dense = keras.layers.Dense(
105
+ num_classes,
106
+ activation=activation,
107
+ name="predictions",
108
+ )
109
+
110
+ # === Functional Model ===
111
+ inputs = self.backbone.input
112
+ x = self.backbone(inputs)
113
+ outputs = self.output_dense(x)
114
+ super().__init__(
115
+ inputs=inputs,
116
+ outputs=outputs,
117
+ **kwargs,
118
+ )
119
+
120
+ # === Config ===
121
+ self.num_classes = num_classes
122
+ self.activation = activation
123
+
124
+ def get_config(self):
125
+ # Backbone serialized in `super`
126
+ config = super().get_config()
127
+ config.update(
128
+ {
129
+ "num_classes": self.num_classes,
130
+ "activation": self.activation,
131
+ }
132
+ )
133
+ return config
@@ -0,0 +1,24 @@
1
+ # Copyright 2024 The KerasHub Authors
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ from keras_hub.src.models.deberta_v3.deberta_v3_backbone import (
16
+ DebertaV3Backbone,
17
+ )
18
+ from keras_hub.src.models.deberta_v3.deberta_v3_presets import backbone_presets
19
+ from keras_hub.src.models.deberta_v3.deberta_v3_tokenizer import (
20
+ DebertaV3Tokenizer,
21
+ )
22
+ from keras_hub.src.utils.preset_utils import register_presets
23
+
24
+ register_presets(backbone_presets, (DebertaV3Backbone, DebertaV3Tokenizer))