diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1e5b61c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/CoreMLModels
+TFLite/SpeechRecognition/ios_speech_commands/Pods
diff --git a/CoreML/ImageClassification/ImageClassification.mlproj/Data Sources/flower_photos.json b/CoreML/ImageClassification/ImageClassification.mlproj/Data Sources/flower_photos.json
new file mode 100644
index 0000000..f91810d
--- /dev/null
+++ b/CoreML/ImageClassification/ImageClassification.mlproj/Data Sources/flower_photos.json
@@ -0,0 +1 @@
+{"dataURL":"file:\/\/\/Users\/hangyojeong\/Dev\/DeepLearning_Summary\/CoreML\/flower_photos\/","id":"9A410913-14F5-45F5-BA7A-771476C5F496","createdDate":"2023-03-22T15:07:14Z","title":"flower_photos","modifiedDate":"2023-03-22T15:08:54Z","preferredFilename":"flower_photos","version":"1.0","dataResult":{"dataURL":"file:\/\/\/Users\/hangyojeong\/Dev\/DeepLearning_Summary\/CoreML\/flower_photos\/","createdDate":"2023-03-22T15:07:14Z","dataSourceID":"9A410913-14F5-45F5-BA7A-771476C5F496"},"activityEntities":["dataSourceMetrics",[{"id":"E80F5A09-1D86-4B9A-BE3B-855044B793B6","title":"Data Summary","createdDate":"2023-03-22T15:08:54Z","event":"dataSourceMetrics","subtitle":"5 Classes, 3,670 Items"}],"dataSourceCreated",[{"id":"6B680BB5-AE2D-4C06-B77F-3F3B9194C246","title":"Data Source Created","createdDate":"2023-03-22T15:07:14Z","event":"dataSourceCreated","subtitle":"flower_photos"}],"dataSourceTrainingStarted",[{"id":"6BB7CA08-0EC9-4D4E-83D7-7F4AB9F265D8","title":"Used By","createdDate":"2023-03-22T15:08:54Z","event":"dataSourceTrainingStarted","subtitle":"ImageClassification 1"}]],"pathType":0,"experimentIDs":["61459CEC-13C8-4D41-BE6D-AF1171677B23"]}
\ No newline at end of file
diff --git a/CoreML/ImageClassification/ImageClassification.mlproj/Model Containers/ImageClassification 1.json b/CoreML/ImageClassification/ImageClassification.mlproj/Model Containers/ImageClassification 1.json
new file mode 100644
index 0000000..c9df7df
--- /dev/null
+++ b/CoreML/ImageClassification/ImageClassification.mlproj/Model Containers/ImageClassification 1.json
@@ -0,0 +1 @@
+{"id":"61459CEC-13C8-4D41-BE6D-AF1171677B23","validationEntity":{"analysedDataType":"auto","dataResult":{"createdDate":"2023-03-22T15:02:05Z"}},"modelEntity":{"createdDate":"2023-03-22T15:02:05Z","id":"42352DB2-100C-4B8B-BFD4-F321174B7B2A","experimentID":"61459CEC-13C8-4D41-BE6D-AF1171677B23","title":"","modifiedDate":"2023-03-22T15:02:05Z","preferredFilename":"","version":"1.0","modelURL":"Models\/ImageClassification%201.mlmodel"},"version":"1.0","settingEntity":{"taskType":"imageClassifier","augmentations":[],"styleTransferAlgorithmType":"image","iterationCount":25,"transferLearningEmbeddingType":"dynamic","harVideoAugmentations":0,"handPoseClassifierAugmentations":[],"algorithmType":"maxEnt","handActionClassifierAugmentations":[],"seedType":"default","featureNames":[]},"state":"trained","trainingEntity":{"finishTime":"2023-03-22T15:10:38Z","validationResults":{"imageClassifier":{"confusionMatrix":[{"expected":"daisy","actual":"daisy","count":36},{"expected":"dandelion","actual":"daisy","count":2},{"expected":"tulips","actual":"daisy","count":1},{"expected":"dandelion","actual":"dandelion","count":42},{"expected":"sunflowers","actual":"dandelion","count":1},{"expected":"roses","actual":"roses","count":35},{"expected":"tulips","actual":"roses","count":3},{"expected":"sunflowers","actual":"sunflowers","count":28},{"expected":"dandelion","actual":"tulips","count":1},{"expected":"roses","actual":"tulips","count":1},{"expected":"tulips","actual":"tulips","count":35}],"statsByLabel":{"daisy":{"count":39,"precisionRecall":{"success":{"recall":0.92307692307692313,"precision":1}}},"roses":{"count":38,"precisionRecall":{"success":{"recall":0.92105263157894735,"precision":0.97222222222222221}}},"sunflowers":{"count":28,"precisionRecall":{"success":{"recall":1,"precision":0.96551724137931039}}},"tulips":{"count":37,"precisionRecall":{"success":{"recall":0.94594594594594594,"precision":0.89743589743589747}}},"dandelion":{"count":43,"precisionRecall":{"success":{"recall":0.97674418604651159,"precision":0.93333333333333335}}}},"accuracy":0.9513513513513514}},"dataURL":"file:\/\/\/Users\/hangyojeong\/Dev\/DeepLearning_Summary\/CoreML\/flower_photos\/","dataResult":{"itemsCount":3670,"createdDate":"2023-03-22T15:02:05Z","dataURL":"file:\/\/\/Users\/hangyojeong\/Dev\/DeepLearning_Summary\/CoreML\/flower_photos\/","dataSourceID":"9A410913-14F5-45F5-BA7A-771476C5F496","classesCount":5,"dataAnalysis":{"summary":{"sampleCount":3670,"classCount":5,"canUseValidation":1},"issues":[{"description":"5 classes found, including dandelion, tulips, sunflowers","severity":"debug"},{"description":"3670 images found, automatically creating validation set","severity":"good"},{"description":"Smallest class is \"daisy\" with 633 images","severity":"debug"},{"description":"Largest class is \"dandelion\" with 898 images","severity":"debug"}],"classifierAnalysis":{"labelStats":{"daisy":633,"roses":641,"sunflowers":699,"tulips":799,"dandelion":898}}}},"trainingResults":{"imageClassifier":{"confusionMatrix":[{"expected":"daisy","actual":"daisy","count":590},{"expected":"dandelion","actual":"daisy","count":2},{"expected":"roses","actual":"daisy","count":1},{"expected":"tulips","actual":"daisy","count":1},{"expected":"daisy","actual":"dandelion","count":1},{"expected":"dandelion","actual":"dandelion","count":854},{"expected":"daisy","actual":"roses","count":1},{"expected":"roses","actual":"roses","count":600},{"expected":"tulips","actual":"roses","count":2},{"expected":"sunflowers","actual":"sunflowers","count":671},{"expected":"daisy","actual":"tulips","count":1},{"expected":"roses","actual":"tulips","count":1},{"expected":"tulips","actual":"tulips","count":760}],"statsByLabel":{"daisy":{"count":594,"precisionRecall":{"success":{"recall":0.9932659932659933,"precision":0.99494097807757165}}},"roses":{"count":603,"precisionRecall":{"success":{"recall":0.99502487562189057,"precision":0.99667774086378735}}},"sunflowers":{"count":671,"precisionRecall":{"success":{"recall":1,"precision":1}}},"tulips":{"count":762,"precisionRecall":{"success":{"recall":0.99737532808398954,"precision":0.99606815203145482}}},"dandelion":{"count":855,"precisionRecall":{"success":{"recall":0.99883040935672518,"precision":0.99766355140186913}}}},"accuracy":0.99713055954088947}},"progress":[{"currentRowIndex":0,"tableIndex":0,"count":0,"isLast":false,"percentComplete":0,"tableDone":false},{"icTrainingColumnHeader":{"hasValidation":true,"elapsedTime":1.184647,"trainingAccuracy":0.42697299999999999,"iterationCount":1,"validationAccuracy":0.37837799999999999},"isLast":false,"currentRowIndex":0,"count":1,"tableDone":false,"tableIndex":734,"percentComplete":0},{"icTrainingColumnHeader":{"hasValidation":true,"elapsedTime":1.3798429999999999,"trainingAccuracy":0.67517899999999997,"iterationCount":2,"validationAccuracy":0.60540499999999997},"isLast":false,"currentRowIndex":0,"count":2,"tableDone":false,"tableIndex":734,"percentComplete":0},{"icTrainingColumnHeader":{"hasValidation":true,"elapsedTime":1.484612,"trainingAccuracy":0.88149200000000005,"iterationCount":3,"validationAccuracy":0.87026999999999999},"isLast":false,"currentRowIndex":0,"count":3,"tableDone":false,"tableIndex":734,"percentComplete":0},{"icTrainingColumnHeader":{"hasValidation":true,"elapsedTime":1.5767169999999999,"trainingAccuracy":0.91535200000000005,"iterationCount":4,"validationAccuracy":0.89729700000000001},"isLast":false,"currentRowIndex":0,"count":4,"tableDone":false,"tableIndex":734,"percentComplete":0},{"icTrainingColumnHeader":{"hasValidation":true,"elapsedTime":1.694707,"trainingAccuracy":0.93170699999999995,"iterationCount":5,"validationAccuracy":0.92972999999999995},"isLast":false,"currentRowIndex":0,"count":5,"tableDone":false,"tableIndex":734,"percentComplete":0},{"icTrainingColumnHeader":{"hasValidation":true,"elapsedTime":2.0899969999999999,"trainingAccuracy":0.95954099999999998,"iterationCount":10,"validationAccuracy":0.94594599999999995},"isLast":false,"currentRowIndex":0,"count":10,"tableDone":false,"tableIndex":734,"percentComplete":0},{"currentRowIndex":0,"tableIndex":0,"count":15,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":20,"isLast":false,"percentComplete":0,"tableDone":false},{"icTrainingColumnHeader":{"hasValidation":true,"elapsedTime":3.4979040000000001,"trainingAccuracy":0.99713099999999999,"iterationCount":25,"validationAccuracy":0.95135099999999995},"isLast":false,"currentRowIndex":0,"count":25,"tableDone":true,"tableIndex":734,"percentComplete":0},{"currentRowIndex":0,"tableIndex":0,"count":30,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":35,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":40,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":45,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":50,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":55,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":60,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":65,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":70,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":75,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":80,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":85,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":90,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":95,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":100,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":105,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":110,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":115,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":120,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":125,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":130,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":135,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":140,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":145,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":150,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":155,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":160,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":165,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":170,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":175,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":180,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":185,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":190,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":195,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":200,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":205,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":210,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":215,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":220,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":225,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":230,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":235,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":240,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":245,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":250,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":255,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":260,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":265,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":270,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":275,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":280,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":285,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":290,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":295,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":300,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":305,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":310,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":315,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":320,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":325,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":330,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":335,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":340,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":345,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":350,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":355,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":360,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":365,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":370,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":375,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":380,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":385,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":390,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":395,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":400,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":405,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":410,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":415,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":420,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":425,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":430,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":435,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":440,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":445,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":450,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":455,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":460,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":465,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":470,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":475,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":480,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":485,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":490,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":495,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":500,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":505,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":510,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":515,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":520,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":525,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":530,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":535,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":540,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":545,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":550,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":555,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":560,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":565,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":570,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":575,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":580,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":585,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":590,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":595,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":600,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":605,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":610,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":615,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":620,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":625,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":630,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":635,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":640,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":645,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":650,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":655,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":660,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":665,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":670,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":675,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":680,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":685,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":690,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":695,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":700,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":705,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":710,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":715,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":720,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":725,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":730,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":735,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":740,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":745,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":750,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":755,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":760,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":765,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":770,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":775,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":780,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":785,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":790,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":795,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":800,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":805,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":810,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":815,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":820,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":825,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":830,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":835,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":840,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":845,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":850,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":855,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":860,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":865,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":870,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":875,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":880,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":885,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":890,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":895,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":900,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":905,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":910,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":915,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":920,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":925,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":930,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":935,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":940,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":945,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":950,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":955,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":960,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":965,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":970,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":975,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":980,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":985,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":990,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":995,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1000,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1005,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1010,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1015,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1020,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1025,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1030,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1035,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1040,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1045,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1050,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1055,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1060,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1065,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1070,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1075,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1080,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1085,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1090,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1095,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1100,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1105,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1110,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1115,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1120,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1125,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1130,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1135,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1140,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1145,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1150,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1155,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1160,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1165,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1170,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1175,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1180,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1185,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1190,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1195,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1200,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1205,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1210,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1215,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1220,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1225,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1230,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1235,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1240,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1245,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1250,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1255,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1260,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1265,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1270,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1275,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1280,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1285,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1290,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1295,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1300,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1305,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1310,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1315,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1320,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1325,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1330,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1335,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1340,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1345,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1350,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1355,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1360,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1365,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1370,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1375,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1380,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1385,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1390,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1395,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1400,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1405,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1410,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1415,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1420,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1425,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1430,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1435,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1440,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1445,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1450,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1455,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1460,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1465,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1470,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1475,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1480,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1485,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1490,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1495,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1500,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1505,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1510,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1515,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1520,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1525,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1530,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1535,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1540,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1545,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1550,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1555,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1560,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1565,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1570,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1575,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1580,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1585,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1590,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1595,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1600,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1605,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1610,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1615,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1620,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1625,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1630,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1635,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1640,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1645,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1650,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1655,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1660,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1665,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1670,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1675,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1680,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1685,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1690,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1695,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1700,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1705,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1710,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1715,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1720,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1725,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1730,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1735,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1740,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1745,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1750,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1755,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1760,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1765,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1770,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1775,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1780,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1785,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1790,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1795,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1800,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1805,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1810,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1815,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1820,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1825,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1830,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1835,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1840,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1845,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1850,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1855,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1860,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1865,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1870,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1875,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1880,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1885,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1890,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1895,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1900,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1905,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1910,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1915,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1920,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1925,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1930,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1935,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1940,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1945,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1950,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1955,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1960,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1965,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1970,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1975,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1980,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1985,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1990,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":1995,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2000,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2005,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2010,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2015,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2020,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2025,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2030,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2035,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2040,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2045,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2050,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2055,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2060,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2065,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2070,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2075,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2080,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2085,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2090,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2095,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2100,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2105,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2110,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2115,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2120,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2125,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2130,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2135,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2140,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2145,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2150,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2155,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2160,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2165,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2170,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2175,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2180,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2185,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2190,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2195,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2200,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2205,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2210,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2215,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2220,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2225,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2230,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2235,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2240,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2245,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2250,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2255,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2260,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2265,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2270,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2275,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2280,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2285,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2290,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2295,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2300,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2305,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2310,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2315,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2320,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2325,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2330,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2335,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2340,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2345,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2350,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2355,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2360,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2365,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2370,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2375,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2380,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2385,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2390,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2395,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2400,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2405,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2410,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2415,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2420,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2425,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2430,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2435,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2440,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2445,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2450,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2455,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2460,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2465,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2470,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2475,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2480,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2485,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2490,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2495,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2500,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2505,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2510,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2515,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2520,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2525,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2530,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2535,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2540,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2545,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2550,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2555,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2560,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2565,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2570,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2575,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2580,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2585,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2590,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2595,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2600,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2605,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2610,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2615,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2620,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2625,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2630,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2635,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2640,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2645,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2650,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2655,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2660,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2665,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2670,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2675,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2680,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2685,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2690,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2695,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2700,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2705,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2710,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2715,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2720,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2725,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2730,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2735,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2740,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2745,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2750,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2755,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2760,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2765,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2770,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2775,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2780,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2785,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2790,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2795,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2800,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2805,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2810,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2815,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2820,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2825,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2830,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2835,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2840,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2845,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2850,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2855,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2860,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2865,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2870,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2875,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2880,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2885,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2890,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2895,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2900,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2905,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2910,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2915,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2920,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2925,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2930,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2935,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2940,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2945,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2950,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2955,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2960,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2965,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2970,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2975,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2980,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2985,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2990,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":2995,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3000,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3005,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3010,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3015,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3020,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3025,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3030,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3035,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3040,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3045,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3050,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3055,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3060,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3065,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3070,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3075,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3080,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3085,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3090,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3095,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3100,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3105,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3110,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3115,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3120,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3125,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3130,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3135,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3140,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3145,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3150,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3155,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3160,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3165,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3170,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3175,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3180,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3185,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3190,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3195,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3200,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3205,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3210,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3215,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3220,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3225,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3230,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3235,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3240,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3245,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3250,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3255,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3260,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3265,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3270,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3275,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3280,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3285,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3290,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3295,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3300,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3305,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3310,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3315,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3320,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3325,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3330,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3335,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3340,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3345,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3350,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3355,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3360,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3365,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3370,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3375,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3380,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3385,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3390,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3395,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3400,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3405,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3410,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3415,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3420,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3425,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3430,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3435,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3440,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3445,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3450,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3455,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3460,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3465,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3470,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3475,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3480,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3485,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3490,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3495,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3500,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3505,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3510,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3515,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3520,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3525,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3530,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3535,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3540,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3545,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3550,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3555,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3560,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3565,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3570,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3575,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3580,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3585,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3590,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3595,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3600,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3605,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3610,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3615,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3620,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3625,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3630,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3635,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3640,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3645,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3650,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3655,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3660,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3665,"isLast":false,"percentComplete":0,"tableDone":false},{"currentRowIndex":0,"tableIndex":0,"count":3670,"isLast":false,"percentComplete":0,"tableDone":true}],"trainingAccuracy":0.99713055954088947,"checkpointMetrics":{},"analysedDataType":"datasource","dataSourceID":"9A410913-14F5-45F5-BA7A-771476C5F496","snapshottableCheckpoints":{},"featureExtractionCheckpointMayBeAvailable":false,"validationAccuracy":0.9513513513513514,"startTime":"2023-03-22T15:08:54Z"},"createdDate":"2023-03-22T15:02:05Z","evaluationContainerEntity":{"testingEvaluationEntity":{"id":"12e207a4-bd75-4ec0-a702-a2e5f5ad514f","createdDate":"2023-03-22T15:02:05Z","dataResult":{"createdDate":"2023-03-22T15:02:05Z"},"analysedDataType":"none"},"createdDate":"2023-03-22T15:10:54Z","id":"743aa4b3-db94-43c7-9270-2f6b7dce47ee","trainingEvaluationEntity":{"evaluationResult":{"imageClassifier":{"confusionMatrix":[{"expected":"daisy","actual":"daisy","count":590},{"expected":"dandelion","actual":"daisy","count":2},{"expected":"roses","actual":"daisy","count":1},{"expected":"tulips","actual":"daisy","count":1},{"expected":"daisy","actual":"dandelion","count":1},{"expected":"dandelion","actual":"dandelion","count":854},{"expected":"daisy","actual":"roses","count":1},{"expected":"roses","actual":"roses","count":600},{"expected":"tulips","actual":"roses","count":2},{"expected":"sunflowers","actual":"sunflowers","count":671},{"expected":"daisy","actual":"tulips","count":1},{"expected":"roses","actual":"tulips","count":1},{"expected":"tulips","actual":"tulips","count":760}],"statsByLabel":{"daisy":{"count":594,"precisionRecall":{"success":{"recall":0.9932659932659933,"precision":0.99494097807757165}}},"sunflowers":{"count":671,"precisionRecall":{"success":{"recall":1,"precision":1}}},"roses":{"count":603,"precisionRecall":{"success":{"recall":0.99502487562189057,"precision":0.99667774086378735}}},"tulips":{"count":762,"precisionRecall":{"success":{"recall":0.99737532808398954,"precision":0.99606815203145482}}},"dandelion":{"count":855,"precisionRecall":{"success":{"recall":0.99883040935672518,"precision":0.99766355140186913}}}},"accuracy":0.99713055954088947}},"createdDate":"2023-03-22T15:02:05Z","id":"ae0a16ba-6557-4580-bfc0-91d99901dca0","dataURL":"file:\/\/\/Users\/hangyojeong\/Dev\/DeepLearning_Summary\/CoreML\/flower_photos\/","dataSourceID":"9A410913-14F5-45F5-BA7A-771476C5F496","dataResult":{"itemsCount":3670,"createdDate":"2023-03-22T15:02:05Z","dataURL":"file:\/\/\/Users\/hangyojeong\/Dev\/DeepLearning_Summary\/CoreML\/flower_photos\/","dataSourceID":"9A410913-14F5-45F5-BA7A-771476C5F496","classesCount":5,"dataAnalysis":{"summary":{"sampleCount":3670,"classCount":5,"canUseValidation":1},"issues":[{"description":"5 classes found, including dandelion, tulips, sunflowers","severity":"debug"},{"description":"3670 images found, automatically creating validation set","severity":"good"},{"description":"Smallest class is \"daisy\" with 633 images","severity":"debug"},{"description":"Largest class is \"dandelion\" with 898 images","severity":"debug"}],"classifierAnalysis":{"labelStats":{"daisy":633,"roses":641,"sunflowers":699,"tulips":799,"dandelion":898}}}},"analysedDataType":"none"},"previewType":"imageClassifier","modifiedDate":"2023-03-22T15:10:54Z","validationEvaluationEntity":{"id":"5c0dc9da-6d7e-4c2a-b8a8-386d7c822e64","createdDate":"2023-03-22T15:02:05Z","dataResult":{"createdDate":"2023-03-22T15:02:05Z"},"analysedDataType":"auto","evaluationResult":{"imageClassifier":{"confusionMatrix":[{"expected":"daisy","actual":"daisy","count":36},{"expected":"dandelion","actual":"daisy","count":2},{"expected":"tulips","actual":"daisy","count":1},{"expected":"dandelion","actual":"dandelion","count":42},{"expected":"sunflowers","actual":"dandelion","count":1},{"expected":"roses","actual":"roses","count":35},{"expected":"tulips","actual":"roses","count":3},{"expected":"sunflowers","actual":"sunflowers","count":28},{"expected":"dandelion","actual":"tulips","count":1},{"expected":"roses","actual":"tulips","count":1},{"expected":"tulips","actual":"tulips","count":35}],"statsByLabel":{"daisy":{"count":39,"precisionRecall":{"success":{"recall":0.92307692307692313,"precision":1}}},"roses":{"count":38,"precisionRecall":{"success":{"recall":0.92105263157894735,"precision":0.97222222222222221}}},"sunflowers":{"count":28,"precisionRecall":{"success":{"recall":1,"precision":0.96551724137931039}}},"tulips":{"count":37,"precisionRecall":{"success":{"recall":0.94594594594594594,"precision":0.89743589743589747}}},"dandelion":{"count":43,"precisionRecall":{"success":{"recall":0.97674418604651159,"precision":0.93333333333333335}}}},"accuracy":0.9513513513513514}}},"evaluationEntities":[{"id":"cd7cc279-7473-4879-a34b-ab345464846f","createdDate":"2023-03-22T15:10:54Z","dataResult":{},"analysedDataType":"none"}]},"activityEntities":["trainingFinished",[{"id":"0447FAAA-408F-430D-AE49-111BF5249125","title":"Training Completed","createdDate":"2023-03-22T15:10:38Z","event":"trainingFinished","subtitle":"25 iterations"}],"trainingDataAdded",[{"id":"467B06D4-1501-499C-A72E-A5186AACD92A","title":"Training Data Added","createdDate":"2023-03-22T15:07:14Z","event":"trainingDataAdded","subtitle":"flower_photos"}],"trainingStarted",[{"id":"052D376F-8343-4956-BA13-51C9FF77A351","title":"Training Started","createdDate":"2023-03-22T15:08:54Z","event":"trainingStarted","subtitle":"25 iterations"}],"experimentCreated",[{"id":"29D591FA-650B-4607-BEB0-95B2D4641BF4","title":"Model Source Created","createdDate":"2023-03-22T15:02:05Z","event":"experimentCreated","subtitle":"ImageClassification 1"}]],"evaluationState":"uninitialized","title":"ImageClassification 1","evaluationEntity":{"id":"52999f13-c536-4997-8516-de9c887872ef","analysedDataType":"none","dataResult":{}},"snapshotRole":{"withoutSnapshots":0},"contentDataResult":{"createdDate":"2023-03-22T15:02:05Z"},"modifiedDate":"2023-03-22T15:10:54Z","preferredFilename":"ImageClassification 1"}
\ No newline at end of file
diff --git a/CoreML/ImageClassification/ImageClassification.mlproj/Models/ImageClassification 1.mlmodel b/CoreML/ImageClassification/ImageClassification.mlproj/Models/ImageClassification 1.mlmodel
new file mode 100644
index 0000000..b697ba9
Binary files /dev/null and b/CoreML/ImageClassification/ImageClassification.mlproj/Models/ImageClassification 1.mlmodel differ
diff --git a/CoreML/ImageClassification/ImageClassification.mlproj/Project.json b/CoreML/ImageClassification/ImageClassification.mlproj/Project.json
new file mode 100644
index 0000000..219d8e0
--- /dev/null
+++ b/CoreML/ImageClassification/ImageClassification.mlproj/Project.json
@@ -0,0 +1 @@
+{"id":"1BF914EB-845D-439F-A7CB-298AE46E07B8","projectName":"ImageClassification","description":"","version":"1.1","authorName":"CommitGuy","createdDate":"2023-03-22T15:02:05Z","license":"","activityEntities":["projectCreated",[{"id":"94EE01E7-21D6-41ED-A1EC-3AB3AD55CAB9","title":"Project Created","createdDate":"2023-03-22T15:02:05Z","event":"projectCreated","subtitle":"ImageClassification"}]],"taskType":"imageClassifier","title":"Image Classification","location":"","versionErrorTitle":"Project file cannot be opened.","modifiedDate":"2023-03-22T15:02:05Z","settingsEntity":{"snapshotOnExtendTraining":true,"snapshotOnResumeTraining":false},"versionErrorSubtitle":"You need a newer version of Create ML to open this file. Download the latest version."}
\ No newline at end of file
diff --git a/CoreML/README.md b/CoreML/README.md
new file mode 100644
index 0000000..e97792b
--- /dev/null
+++ b/CoreML/README.md
@@ -0,0 +1,37 @@
+# CreateML & CoreML
+
+## CreateML
+- Xcode를 실행 후 mouse 오른쪽 클릭 후 CreateML을 실행
+
+
+
+- Template 선택
+
+
+
+- Modeling 편집기
+
+
+
+ - Settings 탭에서 Training Data 를 설정해 Training 탭에서 학습 시킬 수 있음.
+ - Evaluation 탭에서 학습 후 결과를 확인 할 수 있으며
+ - Preview 탭에서 테스트 해볼 수 있음
+ - Output 탭에서 **[Get]**을 클릭하여 Model을 뽑을 수 있음
+
+CreateML은 전이 학습을 사용하기 때문에 모델을 완전히 처음부터 학습시키는 게 아니며, 그 덕에 모델을 빠르고 효율적으로 학습시키게 됨
+
+## CoreML
+- MLModel 파일을 추가하기 위해 Xcode 프로젝트 창에 mlmodel을 Drag & Drop 함
+
+- Utilities 탭에서 모델을 암호화하고 클라우드 배포를 설정할 수 있음
+
+
+### CoreML 추론
+CoreML을 사용하면 비동기 추론이 가능해야 하는데 그렇지 못할 경우 모델 추론에서 병목 현상이 일어날 수 있음.
+CoreML은 모바일 API로 설계되어 모델 추론하는 동안 앱이 멈추는 사용자 경험을 제공하지 않도록 하는 패턴을 사용
+
+
+
+비동기 작업으로 만들기 위해 디스패치 큐(Dispatch Queue)에서 핸들러를 생성
+
+CoreML은 CIImage, CGImage, CVPixelBuffer, Data를 입력으로 받을 수 있음
\ No newline at end of file
diff --git a/CoreML/StableDiffusion/README.md b/CoreML/StableDiffusion/README.md
new file mode 100644
index 0000000..5f94c82
--- /dev/null
+++ b/CoreML/StableDiffusion/README.md
@@ -0,0 +1 @@
+# StableDiffusion
diff --git a/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img.xcodeproj/project.pbxproj b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..bbf8222
--- /dev/null
+++ b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img.xcodeproj/project.pbxproj
@@ -0,0 +1,403 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 56;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 7848E37F29CBEF4B0034907E /* SD2Img2ImgApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7848E37E29CBEF4B0034907E /* SD2Img2ImgApp.swift */; };
+ 7848E38129CBEF4B0034907E /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7848E38029CBEF4B0034907E /* ContentView.swift */; };
+ 7848E38329CBEF4C0034907E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7848E38229CBEF4C0034907E /* Assets.xcassets */; };
+ 7848E38629CBEF4C0034907E /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7848E38529CBEF4C0034907E /* Preview Assets.xcassets */; };
+ 784E31DB29CBF34B00DC6519 /* StableDiffusion in Frameworks */ = {isa = PBXBuildFile; productRef = 784E31DA29CBF34B00DC6519 /* StableDiffusion */; };
+ 784E31DE29CC968C00DC6519 /* ImageGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 784E31DD29CC968C00DC6519 /* ImageGenerator.swift */; };
+ 784E31E129CCA4EE00DC6519 /* ImageToImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 784E31E029CCA4EE00DC6519 /* ImageToImageView.swift */; };
+ 784E31E329CD247D00DC6519 /* PromptView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 784E31E229CD247D00DC6519 /* PromptView.swift */; };
+ 784E31E529CD35AA00DC6519 /* CoreMLModels in Resources */ = {isa = PBXBuildFile; fileRef = 784E31E429CD35AA00DC6519 /* CoreMLModels */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 7848E37B29CBEF4B0034907E /* SD2Img2Img.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SD2Img2Img.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 7848E37E29CBEF4B0034907E /* SD2Img2ImgApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SD2Img2ImgApp.swift; sourceTree = ""; };
+ 7848E38029CBEF4B0034907E /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; };
+ 7848E38229CBEF4C0034907E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 7848E38529CBEF4C0034907E /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; };
+ 784E31DD29CC968C00DC6519 /* ImageGenerator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageGenerator.swift; sourceTree = ""; };
+ 784E31E029CCA4EE00DC6519 /* ImageToImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageToImageView.swift; sourceTree = ""; };
+ 784E31E229CD247D00DC6519 /* PromptView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PromptView.swift; sourceTree = ""; };
+ 784E31E429CD35AA00DC6519 /* CoreMLModels */ = {isa = PBXFileReference; lastKnownFileType = folder; path = CoreMLModels; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 7848E37829CBEF4B0034907E /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 784E31DB29CBF34B00DC6519 /* StableDiffusion in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 7848E37229CBEF4B0034907E = {
+ isa = PBXGroup;
+ children = (
+ 7848E37D29CBEF4B0034907E /* SD2Img2Img */,
+ 7848E37C29CBEF4B0034907E /* Products */,
+ );
+ sourceTree = "";
+ };
+ 7848E37C29CBEF4B0034907E /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 7848E37B29CBEF4B0034907E /* SD2Img2Img.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 7848E37D29CBEF4B0034907E /* SD2Img2Img */ = {
+ isa = PBXGroup;
+ children = (
+ 784E31E429CD35AA00DC6519 /* CoreMLModels */,
+ 784E31DF29CCA4D500DC6519 /* Views */,
+ 784E31DC29CC967700DC6519 /* SD */,
+ 7848E37E29CBEF4B0034907E /* SD2Img2ImgApp.swift */,
+ 7848E38029CBEF4B0034907E /* ContentView.swift */,
+ 7848E38229CBEF4C0034907E /* Assets.xcassets */,
+ 7848E38429CBEF4C0034907E /* Preview Content */,
+ );
+ path = SD2Img2Img;
+ sourceTree = "";
+ };
+ 7848E38429CBEF4C0034907E /* Preview Content */ = {
+ isa = PBXGroup;
+ children = (
+ 7848E38529CBEF4C0034907E /* Preview Assets.xcassets */,
+ );
+ path = "Preview Content";
+ sourceTree = "";
+ };
+ 784E31DC29CC967700DC6519 /* SD */ = {
+ isa = PBXGroup;
+ children = (
+ 784E31DD29CC968C00DC6519 /* ImageGenerator.swift */,
+ );
+ path = SD;
+ sourceTree = "";
+ };
+ 784E31DF29CCA4D500DC6519 /* Views */ = {
+ isa = PBXGroup;
+ children = (
+ 784E31E029CCA4EE00DC6519 /* ImageToImageView.swift */,
+ 784E31E229CD247D00DC6519 /* PromptView.swift */,
+ );
+ path = Views;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 7848E37A29CBEF4B0034907E /* SD2Img2Img */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 7848E38929CBEF4C0034907E /* Build configuration list for PBXNativeTarget "SD2Img2Img" */;
+ buildPhases = (
+ 7848E37729CBEF4B0034907E /* Sources */,
+ 7848E37829CBEF4B0034907E /* Frameworks */,
+ 7848E37929CBEF4B0034907E /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = SD2Img2Img;
+ packageProductDependencies = (
+ 784E31DA29CBF34B00DC6519 /* StableDiffusion */,
+ );
+ productName = SD2Img2Img;
+ productReference = 7848E37B29CBEF4B0034907E /* SD2Img2Img.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 7848E37329CBEF4B0034907E /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ BuildIndependentTargetsInParallel = 1;
+ LastSwiftUpdateCheck = 1420;
+ LastUpgradeCheck = 1420;
+ TargetAttributes = {
+ 7848E37A29CBEF4B0034907E = {
+ CreatedOnToolsVersion = 14.2;
+ };
+ };
+ };
+ buildConfigurationList = 7848E37629CBEF4B0034907E /* Build configuration list for PBXProject "SD2Img2Img" */;
+ compatibilityVersion = "Xcode 14.0";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 7848E37229CBEF4B0034907E;
+ packageReferences = (
+ 784E31D929CBF34B00DC6519 /* XCRemoteSwiftPackageReference "ml-stable-diffusion" */,
+ );
+ productRefGroup = 7848E37C29CBEF4B0034907E /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 7848E37A29CBEF4B0034907E /* SD2Img2Img */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 7848E37929CBEF4B0034907E /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 784E31E529CD35AA00DC6519 /* CoreMLModels in Resources */,
+ 7848E38629CBEF4C0034907E /* Preview Assets.xcassets in Resources */,
+ 7848E38329CBEF4C0034907E /* Assets.xcassets in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 7848E37729CBEF4B0034907E /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 7848E38129CBEF4B0034907E /* ContentView.swift in Sources */,
+ 784E31E129CCA4EE00DC6519 /* ImageToImageView.swift in Sources */,
+ 784E31DE29CC968C00DC6519 /* ImageGenerator.swift in Sources */,
+ 784E31E329CD247D00DC6519 /* PromptView.swift in Sources */,
+ 7848E37F29CBEF4B0034907E /* SD2Img2ImgApp.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ 7848E38729CBEF4C0034907E /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.2;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ };
+ name = Debug;
+ };
+ 7848E38829CBEF4C0034907E /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.2;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 7848E38A29CBEF4C0034907E /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_ASSET_PATHS = "\"SD2Img2Img/Preview Content\"";
+ DEVELOPMENT_TEAM = KYV3CSY2F3;
+ ENABLE_PREVIEWS = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
+ INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
+ INFOPLIST_KEY_UILaunchScreen_Generation = YES;
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.commitguy.img2imgsd.SD2Img2Img;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 7848E38B29CBEF4C0034907E /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_ASSET_PATHS = "\"SD2Img2Img/Preview Content\"";
+ DEVELOPMENT_TEAM = KYV3CSY2F3;
+ ENABLE_PREVIEWS = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
+ INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
+ INFOPLIST_KEY_UILaunchScreen_Generation = YES;
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.commitguy.img2imgsd.SD2Img2Img;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 7848E37629CBEF4B0034907E /* Build configuration list for PBXProject "SD2Img2Img" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 7848E38729CBEF4C0034907E /* Debug */,
+ 7848E38829CBEF4C0034907E /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 7848E38929CBEF4C0034907E /* Build configuration list for PBXNativeTarget "SD2Img2Img" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 7848E38A29CBEF4C0034907E /* Debug */,
+ 7848E38B29CBEF4C0034907E /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+
+/* Begin XCRemoteSwiftPackageReference section */
+ 784E31D929CBF34B00DC6519 /* XCRemoteSwiftPackageReference "ml-stable-diffusion" */ = {
+ isa = XCRemoteSwiftPackageReference;
+ repositoryURL = "https://github.com/apple/ml-stable-diffusion.git";
+ requirement = {
+ branch = main;
+ kind = branch;
+ };
+ };
+/* End XCRemoteSwiftPackageReference section */
+
+/* Begin XCSwiftPackageProductDependency section */
+ 784E31DA29CBF34B00DC6519 /* StableDiffusion */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = 784E31D929CBF34B00DC6519 /* XCRemoteSwiftPackageReference "ml-stable-diffusion" */;
+ productName = StableDiffusion;
+ };
+/* End XCSwiftPackageProductDependency section */
+ };
+ rootObject = 7848E37329CBEF4B0034907E /* Project object */;
+}
diff --git a/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..919434a
--- /dev/null
+++ b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
new file mode 100644
index 0000000..20e07b9
--- /dev/null
+++ b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
@@ -0,0 +1,23 @@
+{
+ "pins" : [
+ {
+ "identity" : "ml-stable-diffusion",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/ml-stable-diffusion.git",
+ "state" : {
+ "branch" : "main",
+ "revision" : "2c4e9de73c9e723de264356f9563706ea9104212"
+ }
+ },
+ {
+ "identity" : "swift-argument-parser",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-argument-parser.git",
+ "state" : {
+ "revision" : "fddd1c00396eed152c45a46bea9f47b98e59301d",
+ "version" : "1.2.0"
+ }
+ }
+ ],
+ "version" : 2
+}
diff --git a/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img.xcodeproj/xcuserdata/hangyojeong.xcuserdatad/xcschemes/xcschememanagement.plist b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img.xcodeproj/xcuserdata/hangyojeong.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 0000000..cda346a
--- /dev/null
+++ b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img.xcodeproj/xcuserdata/hangyojeong.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,14 @@
+
+
+
+
+ SchemeUserState
+
+ SD2Img2Img.xcscheme_^#shared#^_
+
+ orderHint
+ 0
+
+
+
+
diff --git a/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/Assets.xcassets/AccentColor.colorset/Contents.json b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/Assets.xcassets/AccentColor.colorset/Contents.json
new file mode 100644
index 0000000..eb87897
--- /dev/null
+++ b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/Assets.xcassets/AccentColor.colorset/Contents.json
@@ -0,0 +1,11 @@
+{
+ "colors" : [
+ {
+ "idiom" : "universal"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/Assets.xcassets/AppIcon.appiconset/Contents.json b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..13613e3
--- /dev/null
+++ b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,13 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "platform" : "ios",
+ "size" : "1024x1024"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/Assets.xcassets/Contents.json b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/Assets.xcassets/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/Assets.xcassets/cat_512x512.imageset/Contents.json b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/Assets.xcassets/cat_512x512.imageset/Contents.json
new file mode 100644
index 0000000..cf21256
--- /dev/null
+++ b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/Assets.xcassets/cat_512x512.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "cat_512x512.jpg",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/Assets.xcassets/cat_512x512.imageset/cat_512x512.jpg b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/Assets.xcassets/cat_512x512.imageset/cat_512x512.jpg
new file mode 100644
index 0000000..bc30c0f
Binary files /dev/null and b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/Assets.xcassets/cat_512x512.imageset/cat_512x512.jpg differ
diff --git a/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/ContentView.swift b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/ContentView.swift
new file mode 100644
index 0000000..95bd7d6
--- /dev/null
+++ b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/ContentView.swift
@@ -0,0 +1,25 @@
+//
+// ContentView.swift
+// SD2Img2Img
+//
+// Created by HanGyo Jeong on 2023/03/23.
+//
+
+import SwiftUI
+
+struct ContentView: View {
+ @StateObject var imageGenerator = ImageGenerator()
+
+ var body: some View {
+ VStack {
+ ImageToImageView(imageGenerator: imageGenerator)
+ }
+ .padding()
+ }
+}
+
+struct ContentView_Previews: PreviewProvider {
+ static var previews: some View {
+ ContentView()
+ }
+}
diff --git a/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/Preview Content/Preview Assets.xcassets/Contents.json b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/Preview Content/Preview Assets.xcassets/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/Preview Content/Preview Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/SD/ImageGenerator.swift b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/SD/ImageGenerator.swift
new file mode 100644
index 0000000..3287d62
--- /dev/null
+++ b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/SD/ImageGenerator.swift
@@ -0,0 +1,167 @@
+//
+// ImageGenerator.swift
+// SD2Img2Img
+//
+// Created by HanGyo Jeong on 2023/03/23.
+//
+
+import Foundation
+import StableDiffusion
+import CoreML
+import UIKit
+
+// @MainActor: MainThread에서의 동작을 보장
+@MainActor
+final class ImageGenerator: ObservableObject {
+
+ struct GenerationParameter {
+ var prompt: String
+ var negativePrompt: String
+ var guidanceScale: Float
+ var seed: Int
+ var stepCount: Int
+ var imageCount: Int
+ var disableSafety: Bool
+ var startImage: CGImage?
+ var strength: Float = 1.0
+ }
+
+ struct GeneratedImage: Identifiable {
+ let id: UUID = UUID()
+ let uiImage: UIImage
+ }
+
+ struct GeneratedImages {
+ let prompt: String
+ let negativePrompt: String
+ let guidanceScale: Float
+ let imageCount: Int
+ let stepCount: Int
+ let seed: Int
+ let disableSafety: Bool
+ let images: [GeneratedImage]
+ }
+
+ enum GenerationState: Equatable {
+ case idle
+ case generating(progressStep: Int)
+ static func == (lhs: Self, rhs: Self) -> Bool {
+ switch(lhs, rhs){
+ case (.idle, idle):
+ return true
+ case (.generating(let step1), .generating(let step2)):
+ if step1 == step2 {
+ return true
+ } else {
+ return false
+ }
+ default:
+ return false
+ }
+
+ }
+ }
+
+ @Published var generationState: GenerationState = .idle
+ @Published var generatedImages: GeneratedImages?
+ @Published var isPipelineCreated = false
+
+ private var sdPipeline: StableDiffusionPipeline?
+
+ init() {
+
+ }
+
+ // MARK: Setter Funcs
+ func setState(_ state: GenerationState) {
+ generationState = state
+ }
+
+ func setPipeline(_ pipeline: StableDiffusionPipeline) {
+ sdPipeline = pipeline
+ isPipelineCreated = true
+ }
+
+ func setGeneratedImages(_ images: GeneratedImages) {
+ generatedImages = images
+ }
+
+ // swiftlint:disable function_body_length
+ func generateImages(_ parameter: GenerationParameter) {
+ guard generationState == .idle else { return }
+ // Runs the given nonthrowing operation asynchronously as part of a new top-level task.
+ Task.detached(priority: .high) {
+ await self.setState(.generating(progressStep: 0))
+
+ if await self.sdPipeline == nil {
+ guard let path = Bundle.main.path(forResource: "CoreMLModels", ofType: nil, inDirectory: nil) else {
+ fatalError("Fatal error: failed to find the CoreML Models.")
+ }
+ let resourceURL = URL(fileURLWithPath: path)
+
+ let config = MLModelConfiguration()
+
+ /*
+ [Note]
+ Specifying config.computeUnits is not necessary. Use the default
+
+ Specifying config.computeUnits = .cpuAndNeuralEngine will cause an internal fatal error on devices.
+ config.computeUnits = .cpuAndNeuralEngine
+
+ Specifying config.computeUnits = .cpuAndGPU works on device with no reason
+ if !ProcessInfo.processInfo.isiOSAppOnMac {
+ config.computeUnits = .cpuAndGPU
+ }
+ */
+
+ // ReduceMemory option was added at v0.1.0
+ // On iOS, the reduceMemory option should be set to true
+ let reduceMemory = ProcessInfo.processInfo.isiOSAppOnMac ? false:true
+ if let pipeline = try? StableDiffusionPipeline(resourcesAt: resourceURL, configuration: config, reduceMemory: reduceMemory) {
+ await self.setPipeline(pipeline)
+ } else {
+ fatalError("Fatal error: failed to create the Stable-Diffusion-Pipeline.")
+ }
+ }
+
+ if let sdPipeline = await self.sdPipeline {
+ do {
+ // Will Add ProgressHandle
+
+ var configuration = StableDiffusionPipeline.Configuration(prompt: parameter.prompt)
+ configuration.negativePrompt = parameter.negativePrompt
+ configuration.imageCount = parameter.imageCount
+ configuration.stepCount = parameter.stepCount
+ configuration.seed = UInt32(parameter.seed)
+ configuration.guidanceScale = parameter.guidanceScale
+ configuration.disableSafety = parameter.disableSafety
+
+ configuration.startingImage = parameter.startImage
+ configuration.strength = parameter.strength
+
+ let cgImages = try sdPipeline.generateImages(configuration: configuration)
+ print("Images were Generated")
+
+ let uiImages = cgImages.compactMap { image in
+ if let cgImage = image {
+ return UIImage(cgImage: cgImage)
+ } else {
+ return nil
+ }
+ }
+
+ await self.setGeneratedImages(GeneratedImages(prompt: parameter.prompt,
+ negativePrompt: parameter.negativePrompt,
+ guidanceScale: parameter.guidanceScale,
+ imageCount: parameter.imageCount,
+ stepCount: parameter.stepCount,
+ seed: parameter.seed,
+ disableSafety: parameter.disableSafety,
+ images: uiImages.map{ uiImage in GeneratedImage(uiImage: uiImage) }))
+ } catch {
+ print("Failed to generate images.")
+ }
+ }
+ }
+ }
+}
diff --git a/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/SD2Img2ImgApp.swift b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/SD2Img2ImgApp.swift
new file mode 100644
index 0000000..d670822
--- /dev/null
+++ b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/SD2Img2ImgApp.swift
@@ -0,0 +1,17 @@
+//
+// SD2Img2ImgApp.swift
+// SD2Img2Img
+//
+// Created by HanGyo Jeong on 2023/03/23.
+//
+
+import SwiftUI
+
+@main
+struct SD2Img2ImgApp: App {
+ var body: some Scene {
+ WindowGroup {
+ ContentView()
+ }
+ }
+}
diff --git a/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/Views/ImageToImageView.swift b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/Views/ImageToImageView.swift
new file mode 100644
index 0000000..85bd02a
--- /dev/null
+++ b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/Views/ImageToImageView.swift
@@ -0,0 +1,60 @@
+//
+// ImageToImageView.swift
+// SD2Img2Img
+//
+// Created by HanGyo Jeong on 2023/03/24.
+//
+
+import SwiftUI
+
+struct ImageToImageView: View {
+ static let prompt = "happy smile pretty cat"
+ static let negativePrompt =
+"""
+lowers, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits,
+cropped, worst quality, low quality, normal quality, jpeg artifacts, blurry, multiple legs, malformation
+"""
+ static let startImageName = "cat_512x512"
+
+ @ObservedObject var imageGenerator: ImageGenerator
+ @State private var generationParameter = ImageGenerator.GenerationParameter(prompt: prompt,
+ negativePrompt: negativePrompt,
+ guidanceScale: 8.0,
+ seed: 1_000_000,
+ stepCount: 20,
+ imageCount: 1,
+ disableSafety: false,
+ startImage: UIImage(named:startImageName)?.cgImage,
+ strength: 0.5)
+
+ var body: some View {
+ ScrollView {
+ VStack {
+ Text("Image to Image").font(.title3).bold().padding(6)
+ Text("Sample App using apple/ml-stable-diffusion").foregroundColor(.secondary).font(.caption).padding(.bottom)
+
+ Image(ImageToImageView.startImageName).resizable().scaledToFit().frame(height:200)
+
+ PromptView(parameter: $generationParameter).disabled(imageGenerator.generationState != .idle)
+
+ if imageGenerator.generationState == .idle {
+ Button(action: generate) {
+ Text("Generate").font(.title)
+ }.buttonStyle(.borderedProminent)
+ } else {
+ ProgressView()
+ }
+
+ if let generatedImages = imageGenerator.generatedImages {
+ ForEach(generatedImages.images) {
+ Image(uiImage: $0.uiImage).resizable().scaledToFit()
+ }
+ }
+ }
+ }.padding()
+ }
+
+ func generate() {
+ imageGenerator.generateImages(generationParameter)
+ }
+}
diff --git a/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/Views/PromptView.swift b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/Views/PromptView.swift
new file mode 100644
index 0000000..6cbcf69
--- /dev/null
+++ b/CoreML/StableDiffusion/SD2Img2Img/SD2Img2Img/Views/PromptView.swift
@@ -0,0 +1,71 @@
+//
+// PromptView.swift
+// SD2Img2Img
+//
+// Created by HanGyo Jeong on 2023/03/24.
+//
+
+import SwiftUI
+
+struct PromptView: View {
+ @Binding var parameter: ImageGenerator.GenerationParameter
+
+ var body: some View {
+ VStack {
+ HStack{
+ Text("Prompt:");
+ Spacer()
+ }
+ TextField("Prompt:", text: $parameter.prompt).textFieldStyle(RoundedBorderTextFieldStyle())
+
+ HStack {
+ Text("Negative Prompt:");
+ Spacer()
+ }
+ TextField("Negative Prompt:", text: $parameter.prompt).textFieldStyle(RoundedBorderTextFieldStyle())
+
+ Stepper(value: $parameter.guidanceScale, in: 0.0...40.0, step: 0.5) {
+ Text("Guidance scale: \(parameter.guidanceScale, specifier: "%.1f")")
+ }
+ Stepper(value: $parameter.imageCount, in: 1...10) {
+ Text("Image Count: \(parameter.imageCount)")
+ }
+ Stepper(value: $parameter.stepCount, in: 1...100) {
+ Text("Iteration Steps: \(parameter.stepCount)")
+ }
+
+ HStack{
+ Text("Seed:"); Spacer()
+ }
+ TextField("Seed number (0 ... 4_294_967_295)", value: $parameter.seed, formatter: NumberFormatter())
+ .textFieldStyle(RoundedBorderTextFieldStyle())
+ .onSubmit {
+ if parameter.seed < 0 {
+ parameter.seed = 0
+ } else if parameter.seed > UInt32.max {
+ parameter.seed = Int(UInt32.max)
+ } else {
+ // Do Nothing
+ }
+ }
+
+ Stepper(value: $parameter.strength, in: 0.0...0.9, step: 0.1) {
+ Text("Strength: \(parameter.strength, specifier: "%.1f")")
+ }
+ }.padding()
+ }
+}
+
+//struct PromptView_Previews: PreviewProvider {
+// @State static var param = ImageGenerator.GenerationParameter(prompt: "a prompt",
+// negativePrompt: "a negative prompt",
+// guidanceScale: 0.5,
+// seed: 1_000,
+// stepCount: 20,
+// imageCount: 1,
+// disableSafety: false,
+// strength: 0.5)
+// static var previews: some View {
+// PromptView(parameter: $param)
+// }
+//}
diff --git a/CoreML/Swift/FlowerClassification/FlowerClassification.xcodeproj/project.pbxproj b/CoreML/Swift/FlowerClassification/FlowerClassification.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..744d6a3
--- /dev/null
+++ b/CoreML/Swift/FlowerClassification/FlowerClassification.xcodeproj/project.pbxproj
@@ -0,0 +1,367 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 56;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 7840B1B329CB543B00CDC138 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7840B1B229CB543B00CDC138 /* AppDelegate.swift */; };
+ 7840B1B529CB543B00CDC138 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7840B1B429CB543B00CDC138 /* SceneDelegate.swift */; };
+ 7840B1B729CB543B00CDC138 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7840B1B629CB543B00CDC138 /* ViewController.swift */; };
+ 7840B1BA29CB543B00CDC138 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7840B1B829CB543B00CDC138 /* Main.storyboard */; };
+ 7840B1BC29CB543C00CDC138 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7840B1BB29CB543C00CDC138 /* Assets.xcassets */; };
+ 7840B1BF29CB543C00CDC138 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7840B1BD29CB543C00CDC138 /* LaunchScreen.storyboard */; };
+ 7840B1C729CB545100CDC138 /* flowers.mlmodel in Sources */ = {isa = PBXBuildFile; fileRef = 7840B1C629CB545000CDC138 /* flowers.mlmodel */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 7840B1AF29CB543B00CDC138 /* FlowerClassification.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FlowerClassification.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 7840B1B229CB543B00CDC138 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ 7840B1B429CB543B00CDC138 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; };
+ 7840B1B629CB543B00CDC138 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
+ 7840B1B929CB543B00CDC138 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ 7840B1BB29CB543C00CDC138 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 7840B1BE29CB543C00CDC138 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ 7840B1C029CB543C00CDC138 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 7840B1C629CB545000CDC138 /* flowers.mlmodel */ = {isa = PBXFileReference; lastKnownFileType = file.mlmodel; name = flowers.mlmodel; path = ../../../flowers.mlmodel; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 7840B1AC29CB543B00CDC138 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 7840B1A629CB543B00CDC138 = {
+ isa = PBXGroup;
+ children = (
+ 7840B1B129CB543B00CDC138 /* FlowerClassification */,
+ 7840B1B029CB543B00CDC138 /* Products */,
+ );
+ sourceTree = "";
+ };
+ 7840B1B029CB543B00CDC138 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 7840B1AF29CB543B00CDC138 /* FlowerClassification.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 7840B1B129CB543B00CDC138 /* FlowerClassification */ = {
+ isa = PBXGroup;
+ children = (
+ 7840B1C629CB545000CDC138 /* flowers.mlmodel */,
+ 7840B1B229CB543B00CDC138 /* AppDelegate.swift */,
+ 7840B1B429CB543B00CDC138 /* SceneDelegate.swift */,
+ 7840B1B629CB543B00CDC138 /* ViewController.swift */,
+ 7840B1B829CB543B00CDC138 /* Main.storyboard */,
+ 7840B1BB29CB543C00CDC138 /* Assets.xcassets */,
+ 7840B1BD29CB543C00CDC138 /* LaunchScreen.storyboard */,
+ 7840B1C029CB543C00CDC138 /* Info.plist */,
+ );
+ path = FlowerClassification;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 7840B1AE29CB543B00CDC138 /* FlowerClassification */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 7840B1C329CB543C00CDC138 /* Build configuration list for PBXNativeTarget "FlowerClassification" */;
+ buildPhases = (
+ 7840B1AB29CB543B00CDC138 /* Sources */,
+ 7840B1AC29CB543B00CDC138 /* Frameworks */,
+ 7840B1AD29CB543B00CDC138 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = FlowerClassification;
+ productName = FlowerClassification;
+ productReference = 7840B1AF29CB543B00CDC138 /* FlowerClassification.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 7840B1A729CB543B00CDC138 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ BuildIndependentTargetsInParallel = 1;
+ LastSwiftUpdateCheck = 1420;
+ LastUpgradeCheck = 1420;
+ TargetAttributes = {
+ 7840B1AE29CB543B00CDC138 = {
+ CreatedOnToolsVersion = 14.2;
+ };
+ };
+ };
+ buildConfigurationList = 7840B1AA29CB543B00CDC138 /* Build configuration list for PBXProject "FlowerClassification" */;
+ compatibilityVersion = "Xcode 14.0";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 7840B1A629CB543B00CDC138;
+ productRefGroup = 7840B1B029CB543B00CDC138 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 7840B1AE29CB543B00CDC138 /* FlowerClassification */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 7840B1AD29CB543B00CDC138 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 7840B1BF29CB543C00CDC138 /* LaunchScreen.storyboard in Resources */,
+ 7840B1BC29CB543C00CDC138 /* Assets.xcassets in Resources */,
+ 7840B1BA29CB543B00CDC138 /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 7840B1AB29CB543B00CDC138 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 7840B1B729CB543B00CDC138 /* ViewController.swift in Sources */,
+ 7840B1C729CB545100CDC138 /* flowers.mlmodel in Sources */,
+ 7840B1B329CB543B00CDC138 /* AppDelegate.swift in Sources */,
+ 7840B1B529CB543B00CDC138 /* SceneDelegate.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ 7840B1B829CB543B00CDC138 /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 7840B1B929CB543B00CDC138 /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "";
+ };
+ 7840B1BD29CB543C00CDC138 /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 7840B1BE29CB543C00CDC138 /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 7840B1C129CB543C00CDC138 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.2;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ };
+ name = Debug;
+ };
+ 7840B1C229CB543C00CDC138 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.2;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 7840B1C429CB543C00CDC138 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_TEAM = KYV3CSY2F3;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_FILE = FlowerClassification/Info.plist;
+ INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
+ INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
+ INFOPLIST_KEY_UIMainStoryboardFile = Main;
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.commitguy.flowerclassification.FlowerClassification;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 7840B1C529CB543C00CDC138 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_TEAM = KYV3CSY2F3;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_FILE = FlowerClassification/Info.plist;
+ INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
+ INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
+ INFOPLIST_KEY_UIMainStoryboardFile = Main;
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.commitguy.flowerclassification.FlowerClassification;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 7840B1AA29CB543B00CDC138 /* Build configuration list for PBXProject "FlowerClassification" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 7840B1C129CB543C00CDC138 /* Debug */,
+ 7840B1C229CB543C00CDC138 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 7840B1C329CB543C00CDC138 /* Build configuration list for PBXNativeTarget "FlowerClassification" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 7840B1C429CB543C00CDC138 /* Debug */,
+ 7840B1C529CB543C00CDC138 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 7840B1A729CB543B00CDC138 /* Project object */;
+}
diff --git a/CoreML/Swift/FlowerClassification/FlowerClassification.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/CoreML/Swift/FlowerClassification/FlowerClassification.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..919434a
--- /dev/null
+++ b/CoreML/Swift/FlowerClassification/FlowerClassification.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/CoreML/Swift/FlowerClassification/FlowerClassification.xcodeproj/xcuserdata/hangyojeong.xcuserdatad/xcschemes/xcschememanagement.plist b/CoreML/Swift/FlowerClassification/FlowerClassification.xcodeproj/xcuserdata/hangyojeong.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 0000000..e964d1e
--- /dev/null
+++ b/CoreML/Swift/FlowerClassification/FlowerClassification.xcodeproj/xcuserdata/hangyojeong.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,14 @@
+
+
+
+
+ SchemeUserState
+
+ FlowerClassification.xcscheme_^#shared#^_
+
+ orderHint
+ 0
+
+
+
+
diff --git a/CoreML/Swift/FlowerClassification/FlowerClassification/AppDelegate.swift b/CoreML/Swift/FlowerClassification/FlowerClassification/AppDelegate.swift
new file mode 100644
index 0000000..073492d
--- /dev/null
+++ b/CoreML/Swift/FlowerClassification/FlowerClassification/AppDelegate.swift
@@ -0,0 +1,36 @@
+//
+// AppDelegate.swift
+// FlowerClassification
+//
+// Created by HanGyo Jeong on 2023/03/23.
+//
+
+import UIKit
+
+@main
+class AppDelegate: UIResponder, UIApplicationDelegate {
+
+
+
+ func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
+ // Override point for customization after application launch.
+ return true
+ }
+
+ // MARK: UISceneSession Lifecycle
+
+ func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
+ // Called when a new scene session is being created.
+ // Use this method to select a configuration to create the new scene with.
+ return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
+ }
+
+ func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) {
+ // Called when the user discards a scene session.
+ // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
+ // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
+ }
+
+
+}
+
diff --git a/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/1.imageset/5673728_71b8cb57eb.jpg b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/1.imageset/5673728_71b8cb57eb.jpg
new file mode 100644
index 0000000..2cb83fe
Binary files /dev/null and b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/1.imageset/5673728_71b8cb57eb.jpg differ
diff --git a/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/1.imageset/Contents.json b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/1.imageset/Contents.json
new file mode 100644
index 0000000..bb0bc0d
--- /dev/null
+++ b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/1.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "5673728_71b8cb57eb.jpg",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/2.imageset/8684108_a85764b22d_n.jpg b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/2.imageset/8684108_a85764b22d_n.jpg
new file mode 100644
index 0000000..bbdff1c
Binary files /dev/null and b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/2.imageset/8684108_a85764b22d_n.jpg differ
diff --git a/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/2.imageset/Contents.json b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/2.imageset/Contents.json
new file mode 100644
index 0000000..e788569
--- /dev/null
+++ b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/2.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "8684108_a85764b22d_n.jpg",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/3.imageset/10919961_0af657c4e8.jpg b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/3.imageset/10919961_0af657c4e8.jpg
new file mode 100644
index 0000000..6db67f0
Binary files /dev/null and b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/3.imageset/10919961_0af657c4e8.jpg differ
diff --git a/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/3.imageset/Contents.json b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/3.imageset/Contents.json
new file mode 100644
index 0000000..d894938
--- /dev/null
+++ b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/3.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "10919961_0af657c4e8.jpg",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/4.imageset/11746276_de3dec8201.jpg b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/4.imageset/11746276_de3dec8201.jpg
new file mode 100644
index 0000000..55297ed
Binary files /dev/null and b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/4.imageset/11746276_de3dec8201.jpg differ
diff --git a/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/4.imageset/Contents.json b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/4.imageset/Contents.json
new file mode 100644
index 0000000..902a179
--- /dev/null
+++ b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/4.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "11746276_de3dec8201.jpg",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/5.imageset/26254755_1bfc494ef1_n.jpg b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/5.imageset/26254755_1bfc494ef1_n.jpg
new file mode 100644
index 0000000..46141a0
Binary files /dev/null and b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/5.imageset/26254755_1bfc494ef1_n.jpg differ
diff --git a/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/5.imageset/Contents.json b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/5.imageset/Contents.json
new file mode 100644
index 0000000..7fb5041
--- /dev/null
+++ b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/5.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "26254755_1bfc494ef1_n.jpg",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/6.imageset/123128873_546b8b7355_n.jpg b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/6.imageset/123128873_546b8b7355_n.jpg
new file mode 100644
index 0000000..8106451
Binary files /dev/null and b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/6.imageset/123128873_546b8b7355_n.jpg differ
diff --git a/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/6.imageset/Contents.json b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/6.imageset/Contents.json
new file mode 100644
index 0000000..2e56cff
--- /dev/null
+++ b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/6.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "123128873_546b8b7355_n.jpg",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/AccentColor.colorset/Contents.json b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/AccentColor.colorset/Contents.json
new file mode 100644
index 0000000..eb87897
--- /dev/null
+++ b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/AccentColor.colorset/Contents.json
@@ -0,0 +1,11 @@
+{
+ "colors" : [
+ {
+ "idiom" : "universal"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/AppIcon.appiconset/Contents.json b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..13613e3
--- /dev/null
+++ b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,13 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "platform" : "ios",
+ "size" : "1024x1024"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/Contents.json b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/CoreML/Swift/FlowerClassification/FlowerClassification/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/CoreML/Swift/FlowerClassification/FlowerClassification/Base.lproj/LaunchScreen.storyboard b/CoreML/Swift/FlowerClassification/FlowerClassification/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 0000000..865e932
--- /dev/null
+++ b/CoreML/Swift/FlowerClassification/FlowerClassification/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CoreML/Swift/FlowerClassification/FlowerClassification/Base.lproj/Main.storyboard b/CoreML/Swift/FlowerClassification/FlowerClassification/Base.lproj/Main.storyboard
new file mode 100644
index 0000000..8b7c641
--- /dev/null
+++ b/CoreML/Swift/FlowerClassification/FlowerClassification/Base.lproj/Main.storyboard
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CoreML/Swift/FlowerClassification/FlowerClassification/Info.plist b/CoreML/Swift/FlowerClassification/FlowerClassification/Info.plist
new file mode 100644
index 0000000..dd3c9af
--- /dev/null
+++ b/CoreML/Swift/FlowerClassification/FlowerClassification/Info.plist
@@ -0,0 +1,25 @@
+
+
+
+
+ UIApplicationSceneManifest
+
+ UIApplicationSupportsMultipleScenes
+
+ UISceneConfigurations
+
+ UIWindowSceneSessionRoleApplication
+
+
+ UISceneConfigurationName
+ Default Configuration
+ UISceneDelegateClassName
+ $(PRODUCT_MODULE_NAME).SceneDelegate
+ UISceneStoryboardFile
+ Main
+
+
+
+
+
+
diff --git a/CoreML/Swift/FlowerClassification/FlowerClassification/SceneDelegate.swift b/CoreML/Swift/FlowerClassification/FlowerClassification/SceneDelegate.swift
new file mode 100644
index 0000000..69c5870
--- /dev/null
+++ b/CoreML/Swift/FlowerClassification/FlowerClassification/SceneDelegate.swift
@@ -0,0 +1,52 @@
+//
+// SceneDelegate.swift
+// FlowerClassification
+//
+// Created by HanGyo Jeong on 2023/03/23.
+//
+
+import UIKit
+
+class SceneDelegate: UIResponder, UIWindowSceneDelegate {
+
+ var window: UIWindow?
+
+
+ func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
+ // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
+ // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
+ // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
+ guard let _ = (scene as? UIWindowScene) else { return }
+ }
+
+ func sceneDidDisconnect(_ scene: UIScene) {
+ // Called as the scene is being released by the system.
+ // This occurs shortly after the scene enters the background, or when its session is discarded.
+ // Release any resources associated with this scene that can be re-created the next time the scene connects.
+ // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).
+ }
+
+ func sceneDidBecomeActive(_ scene: UIScene) {
+ // Called when the scene has moved from an inactive state to an active state.
+ // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
+ }
+
+ func sceneWillResignActive(_ scene: UIScene) {
+ // Called when the scene will move from an active state to an inactive state.
+ // This may occur due to temporary interruptions (ex. an incoming phone call).
+ }
+
+ func sceneWillEnterForeground(_ scene: UIScene) {
+ // Called as the scene transitions from the background to the foreground.
+ // Use this method to undo the changes made on entering the background.
+ }
+
+ func sceneDidEnterBackground(_ scene: UIScene) {
+ // Called as the scene transitions from the foreground to the background.
+ // Use this method to save data, release shared resources, and store enough scene-specific state information
+ // to restore the scene back to its current state.
+ }
+
+
+}
+
diff --git a/CoreML/Swift/FlowerClassification/FlowerClassification/ViewController.swift b/CoreML/Swift/FlowerClassification/FlowerClassification/ViewController.swift
new file mode 100644
index 0000000..7596e4f
--- /dev/null
+++ b/CoreML/Swift/FlowerClassification/FlowerClassification/ViewController.swift
@@ -0,0 +1,100 @@
+//
+// ViewController.swift
+// FlowerClassification
+//
+// Created by HanGyo Jeong on 2023/03/23.
+//
+
+import UIKit
+import CoreML
+import Vision
+
+class ViewController: UIViewController {
+ let NUM_CLASSES = 5
+ var currentImage = 1
+
+ @IBOutlet weak var txtOutput: UILabel!
+ @IBOutlet weak var imageView: UIImageView!
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ // Do any additional setup after loading the view.
+ }
+
+ func interpretImage() {
+ let theImage: UIImage = UIImage(named: String(currentImage))!
+ getClassification(for: theImage)
+ }
+
+ @IBAction func prevButton(_ sender: Any) {
+ currentImage = currentImage - 1
+ if currentImage <= 0 {
+ currentImage = 6
+ }
+ loadImage()
+ }
+ @IBAction func nextButton(_ sender: Any) {
+ currentImage = currentImage + 1
+ if currentImage >= 7 {
+ currentImage = 1
+ }
+ loadImage()
+ }
+ @IBAction func classifyButton(_ sender: Any) {
+ interpretImage()
+ }
+
+ func loadImage(){
+ imageView.image = UIImage(named: String(currentImage))
+ }
+
+ func getClassification(for image: UIImage) {
+ let orientation = CGImagePropertyOrientation(rawValue: UInt32(image.imageOrientation.rawValue))!
+ guard let ciImage = CIImage(image: image) else { fatalError("...") }
+
+ DispatchQueue.global(qos: .userInitiated).async {
+ let handler = VNImageRequestHandler(ciImage: ciImage, orientation: orientation)
+
+ do {
+ try handler.perform([self.classificationRequest])
+ } catch {
+ print("...")
+ }
+ }
+ }
+
+ // VNCoreMLRequest는 내부적으로 모델 초기화를 함
+ lazy var classificationRequest: VNCoreMLRequest = {
+ do {
+ let model = try VNCoreMLModel.init(for: flowers().model)
+ let request = VNCoreMLRequest(model: model, completionHandler: { [weak self] request, error in
+ self?.processResults(for: request, error: error)
+ })
+ request.imageCropAndScaleOption = .centerCrop
+ return request
+ } catch {
+ fatalError("...")
+ }
+ }()
+
+ func processResults(for request: VNRequest, error: Error?) {
+ DispatchQueue.main.async {
+ guard let results = request.results else {
+ self.txtOutput.text = "..."
+ return
+ }
+ let classifications = results as! [VNClassificationObservation]
+
+ if classifications.isEmpty {
+ self.txtOutput.text = "Nothing recognized."
+ } else {
+ let topClassifications = classifications.prefix(self.NUM_CLASSES)
+ let descriptions = topClassifications.map {
+ classification in return String(format: " (%.2f) %@", classification.confidence, classification.identifier)
+ }
+ self.txtOutput.text = "Classification:\n" + descriptions.joined(separator: "\n")
+ }
+ }
+ }
+}
+
diff --git a/CoreML/flowers.mlmodel b/CoreML/flowers.mlmodel
new file mode 100644
index 0000000..b697ba9
Binary files /dev/null and b/CoreML/flowers.mlmodel differ
diff --git a/CoreML/images/coreml_inference.png b/CoreML/images/coreml_inference.png
new file mode 100644
index 0000000..14dc416
Binary files /dev/null and b/CoreML/images/coreml_inference.png differ
diff --git a/CoreML/images/createml.png b/CoreML/images/createml.png
new file mode 100644
index 0000000..1e21c6d
Binary files /dev/null and b/CoreML/images/createml.png differ
diff --git a/CoreML/images/createml_template.png b/CoreML/images/createml_template.png
new file mode 100644
index 0000000..7ef4f47
Binary files /dev/null and b/CoreML/images/createml_template.png differ
diff --git a/CoreML/images/ml_cloud.png b/CoreML/images/ml_cloud.png
new file mode 100644
index 0000000..d007074
Binary files /dev/null and b/CoreML/images/ml_cloud.png differ
diff --git a/CoreML/images/modeling_editor.png b/CoreML/images/modeling_editor.png
new file mode 100644
index 0000000..4c7c8a3
Binary files /dev/null and b/CoreML/images/modeling_editor.png differ
diff --git a/Images/dl_simplewholeprocess.png b/Images/dl_simplewholeprocess.png
new file mode 100644
index 0000000..5902fdc
Binary files /dev/null and b/Images/dl_simplewholeprocess.png differ
diff --git a/Python/01_Backpropagation_Theory/Backpropagation_example.png b/Python/01_Backpropagation_Theory/Backpropagation_example.png
new file mode 100644
index 0000000..f94c370
Binary files /dev/null and b/Python/01_Backpropagation_Theory/Backpropagation_example.png differ
diff --git a/Python/01_Backpropagation_Theory/CompositionFunctionExample.png b/Python/01_Backpropagation_Theory/CompositionFunctionExample.png
new file mode 100644
index 0000000..db543af
Binary files /dev/null and b/Python/01_Backpropagation_Theory/CompositionFunctionExample.png differ
diff --git a/Python/01_Backpropagation_Theory/PropagationAndBack.png b/Python/01_Backpropagation_Theory/PropagationAndBack.png
new file mode 100644
index 0000000..fe771a8
Binary files /dev/null and b/Python/01_Backpropagation_Theory/PropagationAndBack.png differ
diff --git a/Python/01_Backpropagation_Theory/README.md b/Python/01_Backpropagation_Theory/README.md
new file mode 100644
index 0000000..d25d1cd
--- /dev/null
+++ b/Python/01_Backpropagation_Theory/README.md
@@ -0,0 +1,42 @@
+# 역전파 이론
+수치미분을 통해 미분 계산이 가능하지만 수치 미분은 계산 비용과 정확도 면에 문제가 있음.
+So, 역전파(backpropagation, 오차역전파법)를 이용하면 미분을 효율적으로 계산할 수 있고 결괏값의 오차도 더 적음
+
+ ## 연쇄법칙(Chain Rule)
+ 연쇄 법칙에 따르면 합성 함수(여러 함수가 연결된 함수)의 미분은 구성 함수 각각을 미분한 후 곱한 것과 같음
+
+
+
+ x에 대한 y의 미분은 **"dy/dx = dy/db * db/da * da/dx"** 로 표현할 수 있음.
+ 식에서 알수 있듯 x에 대한 y의 미분은 구성 함수 각각의 미분값을 모두 곱한 값과 같음. 즉, 합성함수의 미분은 각 함수의 국소적 미분들로 분해가 가능. --> 연쇄 법칙
+
+ 위 식(dy/dx = dy/db * db/da * da/dx)은 **"dy/dx = dy/dy * dy/db * db/da * da/dx"** 으로도 표현이 가능 dy/dy은 자신에 대한 미분이라 항상 1
+
+ ## 역전파 원리 도출
+**"dy/dx = dy/dy * dy/db * db/da * da/dx"** 은 합성 함수의 미분은 구성 함수들의 미분의 곱으로 분해할 수 있음을 뜻함
+**"dy/dx = (((dy/dy*dy/db)db/da)da/dx)"** 식과 같이 출력에서 입력 방향으로, 즉 보통의 계산과는 반대 방향으로 미분을 계산, 출력 y에서 입력 x 방향으로 곱하면서 순서대로 미분하면 최종적으로 dy/dx가 구해짐
+
+
+
+dy/db는 함수 y = C(b)의 미분, db/da = B(a)의 미분, da/dx = A(x)의 미분
+
+
+
+ "y의 변수에 대한 미분값"이 변수 y, a, b, x에 대한 미분값이 오른쪽에서 왼쪽으로 전파됨을 알 수 있음 이것이 역전파, 전파되는 데이터는 모두 "y의 미분값"
+
+
+
+순전파와 역전파간의 관계를 봤을때 순전파 시의 변수 a는 역전파 시의 미분 dy/da에 대응, 마찬가지로 b는 dy/db, x는 dy/dx가 대응. 함수에도 마찬가지로 함수 B는 역전파의 B'(a)에 대응 A는 A'(x)에 대응. 이렇게 변수는 '통상값'과 '미분값'이 존재하고 함수는 '통상 계산(순전파)'과 '미분값을 구하기 위한 계산(역전파)'이 존재하는 것으로 생각 가능
+
+역전파를 구할때 C'(b)는 y = C(b)의 미분값, 이 때 C'(b)계산을 위해선 b값이 필요 마찬가지로 B'(a)를 구하기 위해선 a의 값이 필요함. 즉, 역전파 시에는 순전파 시 이용한 데이터가 필요함 따라서 역전파를 구하기 위해선 먼저 순전파를 해야 함
+
+
+## Code
+- code
+ - step01.py: 수동 역전파 구현
+ - step02.py: 자동 역전파 구현 - 1
+ - step03.py: 자동 역전파 구현 - 2
+
+## Reference
+- 역전파 이론 : [Backpropagation Theory](../../Theory/03_Backpropagation/README.md)
+- 역전파 구현 : [Python으로 역전파 구현](code/step03.py)
\ No newline at end of file
diff --git a/Python/01_Backpropagation_Theory/SimplifiedBackgroundpropagation.png b/Python/01_Backpropagation_Theory/SimplifiedBackgroundpropagation.png
new file mode 100644
index 0000000..b5fb75c
Binary files /dev/null and b/Python/01_Backpropagation_Theory/SimplifiedBackgroundpropagation.png differ
diff --git a/Python/01_Backpropagation_Theory/code/README.md b/Python/01_Backpropagation_Theory/code/README.md
new file mode 100644
index 0000000..a82c09a
--- /dev/null
+++ b/Python/01_Backpropagation_Theory/code/README.md
@@ -0,0 +1,16 @@
+# 역전파 자동화
+변수와 함수의 관계를 설정.
+
+- 함수 관점에서 변수는 "입력"과 "출력"
+- 변수 관점에서 함수는 "창조자 혹은 부모"
+
+
+
+
+## 역전파 계산의 흐름
+1. 함수를 가져온다
+2. 함수의 입력을 가져온다
+3. 함수의 backward 메서드를 호출한다
+
+
+이러한 똑같은 처리 흐름의 반복을 자동화 하는 코드(step02.py --> step03.py)
\ No newline at end of file
diff --git a/Python/01_Backpropagation_Theory/code/RelationShipBetVarFunc.png b/Python/01_Backpropagation_Theory/code/RelationShipBetVarFunc.png
new file mode 100644
index 0000000..874949f
Binary files /dev/null and b/Python/01_Backpropagation_Theory/code/RelationShipBetVarFunc.png differ
diff --git a/Python/01_Backpropagation_Theory/code/step01.py b/Python/01_Backpropagation_Theory/code/step01.py
new file mode 100644
index 0000000..dd03263
--- /dev/null
+++ b/Python/01_Backpropagation_Theory/code/step01.py
@@ -0,0 +1,64 @@
+import numpy as np
+
+class Variable:
+ def __init__(self, data):
+ self.data = data
+ self.grad = None # grad: 미분 값
+
+class Function:
+ def __call__(self, input):
+ x = input.data
+ y = self.forward(x) # 구체적인 계산은 forward 메서드에서 함
+ output = Variable(y)
+ self.input = input # 입력 변수를 기억
+ return output
+
+ def forward(self, x):
+ raise NotImplementedError()
+
+ def backward(self, gy):
+ raise NotImplementedError()
+
+# x^2
+class Square(Function):
+ def forward(self, x):
+ return x ** 2
+ def backward(self, gy):
+ x = self.input.data
+ gx = 2 * x * gy
+ return gx
+
+# e^x
+class Exp(Function):
+ def forward(self, x):
+ return np.exp(x)
+ def backward(self, gy):
+ x = self.input.data
+ gx = np.exp(x) * gy
+ return gx
+
+# 수치미분
+def numerical_diff(f, x, eps=1e-4):
+ x0 = Variable(x.data - eps)
+ x1 = Variable(x.data + eps)
+ y0 = f(x0)
+ y1 = f(x1)
+
+ return (y1.data - y0.data) / (2 * eps)
+
+A = Square()
+B = Exp()
+C = Square()
+
+x = Variable(np.array(0.5))
+a = A(x)
+b = B(a)
+y = C(b)
+
+# 역전파 계산
+y.grad = np.array(1.0)
+b.grad = C.backward(y.grad)
+a.grad = B.backward(b.grad)
+x.grad = A.backward(a.grad)
+
+print(x.grad)
\ No newline at end of file
diff --git a/Python/01_Backpropagation_Theory/code/step02.py b/Python/01_Backpropagation_Theory/code/step02.py
new file mode 100644
index 0000000..bd27c40
--- /dev/null
+++ b/Python/01_Backpropagation_Theory/code/step02.py
@@ -0,0 +1,89 @@
+import numpy as np
+
+class Variable:
+ def __init__(self, data):
+ self.data = data
+ self.grad = None # grad: 미분 값
+ self.creator = None
+
+ def set_creator(self, func):
+ self.creator = func
+
+class Function:
+ def __call__(self, input):
+ x = input.data
+ y = self.forward(x) # 구체적인 계산은 forward 메서드에서 함
+ output = Variable(y)
+ output.set_creator(self) # 출력 변수에 창조자를 설정
+ self.input = input # 입력 변수를 기억
+ self.output = output # 출력도 저장
+ return output
+
+ def forward(self, x):
+ raise NotImplementedError()
+
+ def backward(self, gy):
+ raise NotImplementedError()
+
+# x^2
+class Square(Function):
+ def forward(self, x):
+ return x ** 2
+ def backward(self, gy):
+ x = self.input.data
+ gx = 2 * x * gy
+ return gx
+
+# e^x
+class Exp(Function):
+ def forward(self, x):
+ return np.exp(x)
+ def backward(self, gy):
+ x = self.input.data
+ gx = np.exp(x) * gy
+ return gx
+
+# 수치미분
+def numerical_diff(f, x, eps=1e-4):
+ x0 = Variable(x.data - eps)
+ x1 = Variable(x.data + eps)
+ y0 = f(x0)
+ y1 = f(x1)
+
+ return (y1.data - y0.data) / (2 * eps)
+
+A = Square()
+B = Exp()
+C = Square()
+
+x = Variable(np.array(0.5))
+a = A(x)
+b = B(a)
+y = C(b)
+
+# 계산 그래프의 노드들을 거꾸로 거슬러 올라감
+assert y.creator == C
+assert y.creator.input == b
+assert y.creator.input.creator == B
+assert y.creator.input.creator.input == a
+assert y.creator.input.creator.input.creator == A
+assert y.creator.input.creator.input.creator.input == x
+
+# y --> b 까지의 역전파
+y.grad = np.array(1.0)
+
+C = y.creator # 1. 함수를 가져옴
+b = C.input # 2. 함수의 입력을 가져옴
+b.grad = C.backward(y.grad) # 3. 함수의 backward 메서드를 호출
+
+# b --> a 까지의 역전파
+B = b.creator # 1. 함수를 가져옴
+a = B.input # 2. 함수의 입력을 가져옴
+a.grad = B.backward(b.grad) # 3. 함수의 backward 메서드를 호출
+
+# a --> x 까지의 역전파
+A = a.creator # 1. 함수를 가져옴
+x = A.input # 2. 함수의 입력을 가져옴
+x.grad = A.backward(a.grad) # 3. 함수의 backward 메서드를 호출
+
+print(x.grad)
\ No newline at end of file
diff --git a/Python/01_Backpropagation_Theory/code/step03.py b/Python/01_Backpropagation_Theory/code/step03.py
new file mode 100644
index 0000000..e9e3d4b
--- /dev/null
+++ b/Python/01_Backpropagation_Theory/code/step03.py
@@ -0,0 +1,74 @@
+import numpy as np
+
+class Variable:
+ def __init__(self, data):
+ self.data = data
+ self.grad = None # grad: 미분 값
+ self.creator = None
+
+ def set_creator(self, func):
+ self.creator = func
+
+ def backward(self):
+ f = self.creator # 1. 함수를 가져옴
+ if f is not None:
+ x = f.input # 2. 함수의 입력을 가져옴
+ x.grad = f.backward(self.grad) # 3. 함수의 backward 메서드를 호출
+ x.backward() # 하나 앞 변수의 backward 메서드를 호출(재귀)
+
+class Function:
+ def __call__(self, input):
+ x = input.data
+ y = self.forward(x) # 구체적인 계산은 forward 메서드에서 함
+ output = Variable(y)
+ output.set_creator(self) # 출력 변수에 창조자를 설정
+ self.input = input # 입력 변수를 기억
+ self.output = output # 출력도 저장
+ return output
+
+ def forward(self, x):
+ raise NotImplementedError()
+
+ def backward(self, gy):
+ raise NotImplementedError()
+
+# x^2
+class Square(Function):
+ def forward(self, x):
+ return x ** 2
+ def backward(self, gy):
+ x = self.input.data
+ gx = 2 * x * gy
+ return gx
+
+# e^x
+class Exp(Function):
+ def forward(self, x):
+ return np.exp(x)
+ def backward(self, gy):
+ x = self.input.data
+ gx = np.exp(x) * gy
+ return gx
+
+# 수치미분
+def numerical_diff(f, x, eps=1e-4):
+ x0 = Variable(x.data - eps)
+ x1 = Variable(x.data + eps)
+ y0 = f(x0)
+ y1 = f(x1)
+
+ return (y1.data - y0.data) / (2 * eps)
+
+A = Square()
+B = Exp()
+C = Square()
+
+x = Variable(np.array(0.5))
+a = A(x)
+b = B(a)
+y = C(b)
+
+y.grad = np.array(1.0)
+y.backward()
+
+print(x.grad)
\ No newline at end of file
diff --git a/Python/README.md b/Python/README.md
new file mode 100644
index 0000000..7852927
--- /dev/null
+++ b/Python/README.md
@@ -0,0 +1,10 @@
+# 밑바닥부터 시작하는 딥러닝
+Python으로 Deep Learning Framework 만들어 보기
+
+## 필요 소프트웨어
+- python 3.3 이상
+- 넘파이
+- MatPlotlib
+- Cupy
+- Pilow
+
diff --git a/Pytorch/2_CNN/CNNImageClassify_TransferLearning.ipynb b/Pytorch/2_CNN/CNNImageClassify_TransferLearning.ipynb
new file mode 100644
index 0000000..8e48407
--- /dev/null
+++ b/Pytorch/2_CNN/CNNImageClassify_TransferLearning.ipynb
@@ -0,0 +1,335 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "e006bc4a",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Module Import\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "import torch\n",
+ "import torch.nn as nn\n",
+ "import torch.nn.functional as F\n",
+ "from torchvision import transforms, datasets"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "912fbe35",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Using PyTorch version: 1.13.0 Device: cpu\n"
+ ]
+ }
+ ],
+ "source": [
+ "if torch.cuda.is_available():\n",
+ " DEVICE = torch.device('cuda')\n",
+ "else:\n",
+ " DEVICE = torch.device('cpu')\n",
+ "\n",
+ "print('Using PyTorch version:', torch.__version__, ' Device:',DEVICE)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "b20b46a1",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "BATCH_SIZE = 32\n",
+ "EPOCHS = 10"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "d236ecb2",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# 개미와 벌을 분류하기 위해 개미 이미지 데이터와 벌 이미지 데이터 불러오기(Train Set, Test Set 분리)\n",
+ "data_transforms = {\n",
+ " 'train': transforms.Compose([transforms.RandomResizedCrop(224), # - (1)\n",
+ " transforms.RandomHorizontalFlip(),\n",
+ " transforms.ToTensor(),\n",
+ " transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])\n",
+ " ]),\n",
+ " 'val': transforms.Compose([transforms.CenterCrop(224),\n",
+ " transforms.Resize(224),\n",
+ " transforms.ToTensor(),\n",
+ " transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])\n",
+ " ])\n",
+ "}\n",
+ "\n",
+ "image_datasets = {x: datasets.ImageFolder(\"data/hymenoptera_data\", data_transforms[x]) for x in ['train', 'val']}\n",
+ "dataloaders = {x: torch.utils.data.DataLoader(image_datasets[x], batch_size = BATCH_SIZE, num_workers = 0, shuffle = True) for x in ['train', 'val']}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "2ba25482",
+ "metadata": {},
+ "source": [
+ "(1) : 해당 이미지를 224 사이즈로 변경하되 변경되는 이미지 픽셀 값은 랜덤으로 선택. 이미지 내 랜덤으로 선택해 224 사이즈로 변경"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "2c4c657c",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "X_train: torch.Size([32, 3, 224, 224]) type: torch.FloatTensor\n",
+ "y_train: torch.Size([32]) type: torch.LongTensor\n"
+ ]
+ }
+ ],
+ "source": [
+ "# 데이터 확인\n",
+ "for (X_train, y_train) in dataloaders['train']:\n",
+ " print('X_train:', X_train.size(), 'type:', X_train.type())\n",
+ " print('y_train:', y_train.size(), 'type:', y_train.type())\n",
+ " break"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "e178b361",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n",
+ "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n",
+ "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n",
+ "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n",
+ "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n",
+ "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n",
+ "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n",
+ "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n",
+ "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n",
+ "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "pltsize = 1\n",
+ "plt.figure(figsize=(10*pltsize, pltsize))\n",
+ "\n",
+ "for i in range(10):\n",
+ " plt.subplot(1, 10, i + 1)\n",
+ " plt.axis('off')\n",
+ " plt.imshow(np.transpose(X_train[i], (1, 2, 0)))\n",
+ " plt.title('Class: ' + str(y_train[i].item()))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "af83d345",
+ "metadata": {},
+ "source": [
+ "제시된 10개의 이미지 데이터 각각은 224*224*3 개의 픽셀로 구성돼 있는 이미지"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "acb6f2b7",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# 불러온 특정 모델에 대해 학습을 진행하며 학습 데이터에 대한 모델 성능을 확인하는 함수\n",
+ "def train(model, train_loader, optimizer, log_interval):\n",
+ " model.train()\n",
+ " for batch_idx, (image, label) in enumerate(train_loader):\n",
+ " image = image.to(DEVICE)\n",
+ " label = label.to(DEVICE)\n",
+ " optimizer.zero_grad()\n",
+ " loss = criterion(output, label)\n",
+ " loss.backward()\n",
+ " optimizer.step()\n",
+ " \n",
+ " if batch_idx % log_interval == 0:\n",
+ " print(\"Train Epoch: {} [{}/{}({:.0f}%)] \\t Train Loss: {:.6f}\".format(Epoch, batch_idx * len(image), len(train_loader.dataset), 100 * batch_idx / len(train_loader), loss.item()))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "d1ffc6bb",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# 학습되는 과정 속에서 검증 데이터에 대한 모델 성능을 확인하는 함수 정의\n",
+ "def evaluate(model, test_loader):\n",
+ " model.eval()\n",
+ " test_loss = 0\n",
+ " correct = 0\n",
+ " \n",
+ " with torch.no_grad():\n",
+ " for image, label in test_loader:\n",
+ " image = image.to(DEVICE)\n",
+ " label = label.to(DEVICE)\n",
+ " output = model(image)\n",
+ " test_loss += criterion(output, label).item()\n",
+ " prediction = output.max(1, keepdim = True)[1]\n",
+ " correct += prediction.eq(label.view_as(prediction)).sum().item()\n",
+ " \n",
+ " test_loss /= len(test_loader.dataset)\n",
+ " test_accuracy = 100 * correct / len(test_loader.dataset)\n",
+ " return test_loss, test_accuracy"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "70ffa926",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/Users/hangyojeong/opt/anaconda3/envs/pytorch_test/lib/python3.10/site-packages/torchvision/models/_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.\n",
+ " warnings.warn(\n",
+ "/Users/hangyojeong/opt/anaconda3/envs/pytorch_test/lib/python3.10/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=None`.\n",
+ " warnings.warn(msg)\n"
+ ]
+ },
+ {
+ "ename": "AssertionError",
+ "evalue": "Torch not compiled with CUDA enabled",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[0;32mIn[15], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# 파이토치 내에서 제공하는 미리 학습되지 않은 ResNet18 모델 불러온 후 Ouptut 크기 설정\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mtorchvision\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mmodels\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mmodels\u001b[39;00m\n\u001b[0;32m----> 3\u001b[0m model \u001b[38;5;241m=\u001b[39m \u001b[43mmodels\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresnet18\u001b[49m\u001b[43m(\u001b[49m\u001b[43mpretrained\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcuda\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 4\u001b[0m num_ftrs \u001b[38;5;241m=\u001b[39m model\u001b[38;5;241m.\u001b[39mfc\u001b[38;5;241m.\u001b[39min_features\n\u001b[1;32m 5\u001b[0m model\u001b[38;5;241m.\u001b[39mfc \u001b[38;5;241m=\u001b[39m nn\u001b[38;5;241m.\u001b[39mLinear(num_ftrs, \u001b[38;5;241m2\u001b[39m)\n",
+ "File \u001b[0;32m~/opt/anaconda3/envs/pytorch_test/lib/python3.10/site-packages/torch/nn/modules/module.py:747\u001b[0m, in \u001b[0;36mModule.cuda\u001b[0;34m(self, device)\u001b[0m\n\u001b[1;32m 730\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcuda\u001b[39m(\u001b[38;5;28mself\u001b[39m: T, device: Optional[Union[\u001b[38;5;28mint\u001b[39m, device]] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m T:\n\u001b[1;32m 731\u001b[0m \u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"Moves all model parameters and buffers to the GPU.\u001b[39;00m\n\u001b[1;32m 732\u001b[0m \n\u001b[1;32m 733\u001b[0m \u001b[38;5;124;03m This also makes associated parameters and buffers different objects. So\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 745\u001b[0m \u001b[38;5;124;03m Module: self\u001b[39;00m\n\u001b[1;32m 746\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 747\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_apply\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43;01mlambda\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mt\u001b[49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcuda\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdevice\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n",
+ "File \u001b[0;32m~/opt/anaconda3/envs/pytorch_test/lib/python3.10/site-packages/torch/nn/modules/module.py:639\u001b[0m, in \u001b[0;36mModule._apply\u001b[0;34m(self, fn)\u001b[0m\n\u001b[1;32m 637\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_apply\u001b[39m(\u001b[38;5;28mself\u001b[39m, fn):\n\u001b[1;32m 638\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m module \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mchildren():\n\u001b[0;32m--> 639\u001b[0m \u001b[43mmodule\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_apply\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfn\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 641\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcompute_should_use_set_data\u001b[39m(tensor, tensor_applied):\n\u001b[1;32m 642\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m torch\u001b[38;5;241m.\u001b[39m_has_compatible_shallow_copy_type(tensor, tensor_applied):\n\u001b[1;32m 643\u001b[0m \u001b[38;5;66;03m# If the new tensor has compatible tensor type as the existing tensor,\u001b[39;00m\n\u001b[1;32m 644\u001b[0m \u001b[38;5;66;03m# the current behavior is to change the tensor in-place using `.data =`,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 649\u001b[0m \u001b[38;5;66;03m# global flag to let the user control whether they want the future\u001b[39;00m\n\u001b[1;32m 650\u001b[0m \u001b[38;5;66;03m# behavior of overwriting the existing tensor or not.\u001b[39;00m\n",
+ "File \u001b[0;32m~/opt/anaconda3/envs/pytorch_test/lib/python3.10/site-packages/torch/nn/modules/module.py:662\u001b[0m, in \u001b[0;36mModule._apply\u001b[0;34m(self, fn)\u001b[0m\n\u001b[1;32m 658\u001b[0m \u001b[38;5;66;03m# Tensors stored in modules are graph leaves, and we don't want to\u001b[39;00m\n\u001b[1;32m 659\u001b[0m \u001b[38;5;66;03m# track autograd history of `param_applied`, so we have to use\u001b[39;00m\n\u001b[1;32m 660\u001b[0m \u001b[38;5;66;03m# `with torch.no_grad():`\u001b[39;00m\n\u001b[1;32m 661\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m torch\u001b[38;5;241m.\u001b[39mno_grad():\n\u001b[0;32m--> 662\u001b[0m param_applied \u001b[38;5;241m=\u001b[39m \u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[43mparam\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 663\u001b[0m should_use_set_data \u001b[38;5;241m=\u001b[39m compute_should_use_set_data(param, param_applied)\n\u001b[1;32m 664\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m should_use_set_data:\n",
+ "File \u001b[0;32m~/opt/anaconda3/envs/pytorch_test/lib/python3.10/site-packages/torch/nn/modules/module.py:747\u001b[0m, in \u001b[0;36mModule.cuda..\u001b[0;34m(t)\u001b[0m\n\u001b[1;32m 730\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcuda\u001b[39m(\u001b[38;5;28mself\u001b[39m: T, device: Optional[Union[\u001b[38;5;28mint\u001b[39m, device]] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m T:\n\u001b[1;32m 731\u001b[0m \u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"Moves all model parameters and buffers to the GPU.\u001b[39;00m\n\u001b[1;32m 732\u001b[0m \n\u001b[1;32m 733\u001b[0m \u001b[38;5;124;03m This also makes associated parameters and buffers different objects. So\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 745\u001b[0m \u001b[38;5;124;03m Module: self\u001b[39;00m\n\u001b[1;32m 746\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 747\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_apply(\u001b[38;5;28;01mlambda\u001b[39;00m t: \u001b[43mt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcuda\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdevice\u001b[49m\u001b[43m)\u001b[49m)\n",
+ "File \u001b[0;32m~/opt/anaconda3/envs/pytorch_test/lib/python3.10/site-packages/torch/cuda/__init__.py:221\u001b[0m, in \u001b[0;36m_lazy_init\u001b[0;34m()\u001b[0m\n\u001b[1;32m 217\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\n\u001b[1;32m 218\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCannot re-initialize CUDA in forked subprocess. To use CUDA with \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 219\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmultiprocessing, you must use the \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mspawn\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m start method\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 220\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(torch\u001b[38;5;241m.\u001b[39m_C, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m_cuda_getDeviceCount\u001b[39m\u001b[38;5;124m'\u001b[39m):\n\u001b[0;32m--> 221\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mAssertionError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTorch not compiled with CUDA enabled\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 222\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m _cudart \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 223\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mAssertionError\u001b[39;00m(\n\u001b[1;32m 224\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlibcudart functions unavailable. It looks like you have a broken build?\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
+ "\u001b[0;31mAssertionError\u001b[0m: Torch not compiled with CUDA enabled"
+ ]
+ }
+ ],
+ "source": [
+ "# 파이토치 내에서 제공하는 미리 학습되지 않은 ResNet18 모델 불러온 후 Ouptut 크기 설정\n",
+ "import torchvision.models as models # - (1)\n",
+ "model = models.resnet18(pretrained = False).cuda() # - (2)\n",
+ "num_ftrs = model.fc.in_features # - (3)\n",
+ "model.fc = nn.Linear(num_ftrs, 2) # - (4)\n",
+ "model = model.cuda() # - (5)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "f5cece8d",
+ "metadata": {},
+ "source": [
+ "(1) : torchvision Module의 models 내에 있는 models를 임포트\n",
+ "(2) : torchvision.models 내에 있는 models resnet18 모델을 불러옴.\n",
+ "미리 학습된 파라미터 값을 불러오는 과정은 pretrained = True 인자 값을 조정해 설정\n",
+ "pretrained = False이면 모델의 구조만 불러오고 모델 구조 내에 있는 파라미터는 특정 initializer에서 랜덤으로 샘플링한 값을 이용해 모델을 불러옴\n",
+ "\n",
+ "학습되지 않은 즉 설정된 initializer의 분포 내에서 샘플링한 파라미터 값을 이용해 모델을 학습하는 것보다는 다른 데이터에 학습된 파라미터를 이용하는 것이 좋아 보이지만 만약 다른 데이터셋에 대해 모델이 과적합돼 정작 데이터를 분류하지 못하게 된다면 문제가 생길수 있음 But, 그렇다해도 아예 랜덤으로 설정된 파라미터 값을 이용하는것보다는 나음\n",
+ "\n",
+ "본인이 이용하고자 하는 데이터와 아주 비슷한 데이터에서 학습된 모델을 이용할 수 있다면 우리가 이용하고자 하는 데이터에도 잘 작동할 가능성이 높음\n",
+ "\n",
+ "(3) : torchvision.model 내에 있는 models를 이용해 불러온 모델에 대해 Fully Connected Layer를 구성하고 있는 부분에 접근\n",
+ "in_features는 resnet34 모델의 Fully Connected Layer의 Input에 해당하는 노드 수를 num_ftrs로 저장\n",
+ "(4) : resnet18 모델의 Fully Connected Layer의 Input에 해당하는 노드 수를 이용해 새로운 레이어를 추가, 개미와 벌을 분류하기 때문에 클래스 개수인 2개로 Output을 설정\n",
+ "(5) : 기존에 있는 모델을 불러와 새로 재구성한 모델을 학습시키기 위해 사전에 정의한 DEVICE에 할당"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "id": "8db5b2a6",
+ "metadata": {},
+ "outputs": [
+ {
+ "ename": "NameError",
+ "evalue": "name 'model' is not defined",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[0;32mIn[16], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Optimizer, Objective Function 설정\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m optimizer \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39moptim\u001b[38;5;241m.\u001b[39mAdam(\u001b[43mmodel\u001b[49m\u001b[38;5;241m.\u001b[39mparameters(), lr\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0.0001\u001b[39m)\n\u001b[1;32m 3\u001b[0m criterion \u001b[38;5;241m=\u001b[39m nn\u001b[38;5;241m.\u001b[39mCrossEntropyLoss()\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28mprint\u001b[39m(model)\n",
+ "\u001b[0;31mNameError\u001b[0m: name 'model' is not defined"
+ ]
+ }
+ ],
+ "source": [
+ "# Optimizer, Objective Function 설정\n",
+ "optimizer = torch.optim.Adam(model.parameters(), lr=0.0001)\n",
+ "criterion = nn.CrossEntropyLoss()\n",
+ "\n",
+ "print(model)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "ee04678d",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# 미리 학습되지 않은 ResNet18 학습을 실행하며 Train, Test set의 Loss 및 Test set Accuracy 확인\n",
+ "for Epoch in range(1, EPOCHS + 1):\n",
+ " train(model, dataloaders[“train”], optimizer, log_interval = 5) \n",
+ " test_loss, test_accuracy = evaluate(model, dataloaders[“val”]) \n",
+ " print(“\\n[EPOCH: {}], \\tTest Loss: {:.4f}, \\tTest Accuracy: {:.2f} % \\n”.format(Epoch, test_loss, test_accuracy))"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.10.8"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/Pytorch/2_CNN/README.md b/Pytorch/2_CNN/README.md
index e4baaf4..dd19535 100644
--- a/Pytorch/2_CNN/README.md
+++ b/Pytorch/2_CNN/README.md
@@ -52,4 +52,7 @@ Fully Connected Layer도 그대로 사용하고 Output Layer만 디자인하기
Transfer Learning은 결국 내가 학습하고자 하는 모델의 초기 Weight에 Pre-Trained Model의 Weight를 사용하는 것과 같기 때문에 Initialization 기법으로 바라볼 수도 있음
-
\ No newline at end of file
+
+
+
+- [CODE] CNNImageClassify_TransferLearning.ipynb
\ No newline at end of file
diff --git a/Pytorch/3_NLP/BPE.py b/Pytorch/3_NLP/BPE.py
new file mode 100644
index 0000000..a1c802f
--- /dev/null
+++ b/Pytorch/3_NLP/BPE.py
@@ -0,0 +1,93 @@
+# collections.defaultdict: dictionary와 거의 비슷하지만 key값이 없을 경우 미리 지정해 놓은 초기값을 반환하는 dictionary
+# re.escape: 문자열을 입력받으면 특수문자들을 이스케이프 처리해줌
+# 정규표현식 r'' 의미 : 파이썬 정규식에는 Raw string이라고 해서 컴파일 해야 하는 정규식이 Raw String(순수한 문자)임을 알려줌
+# [정규표현식]
+# \d : 숫자를 찾음, \D : 숫자가 아닌 것을 찾음
+# \s : whitespace 문자인 것을 찾음, \S : whitespace 문자가 아닌 것을 찾음
+# \w : 문자 + 숫자인 것을 찾음, \W : 문자 + 숫자가 아닌 것을 찾음
+
+# [정규표현식] - 메타문자
+# []: 문자 클래스
+# {m,n}: m회 이상 n회 이하 반복
+# | : or 조건식, ^ : 문자열의 시작, $ : 문자열의 끝, ? : 0회 이상 1회 이하(0 또는 1), \ : 이스케이프 또는 메타 문자를 일반 문자로 인식하게 함
+
+# [정규표현식] - 전방탐색과 후방탐색
+# 원하는 문자를 검색하기 위해 정규식을 사용
+# 전방 탐색(lookahead) - 앞에서 찾기
+# 일치 영역을 발견해도 그 값을 반환하지 않는 패턴, 전방탐색 패턴의 구문은 '?='로 시작. 등호(=) 다음에 일치할 텍스트가 오는 하위 표현식
+# 후방 탐색(lookbehind) - 뒤에서 찾기
+# 후방탐색 연산은 ?<=
+# http://minsone.github.io/regex/regexp-lookaround
+
+import re, collections
+def get_stats(vocab):
+ pairs = collections.defaultdict(int)
+ for word, freq in vocab.items():
+ symbols = word.split()
+ for i in range(len(symbols) - 1):
+ pairs[symbols[i], symbols[i+1]] += freq
+
+ return pairs
+
+def merge_vocab(pair, v_in):
+ v_out = {}
+ bigram = re.escape(' '.join(pair))
+ p = re.compile(r'(?': 5,
+'l o w e r ': 2,
+'n e w e s t ': 6,
+'w i d e s t ': 3}
+
+num_merges = 10
+
+for i in range(num_merges): # 4번 과정
+ pairs = get_stats(vocab) # 2번 과정
+ best = max(pairs, key=pairs.get) # 2번 과정
+ vocab = merge_vocab(best, vocab) # 3번 과정
+
+ # print(f'Step {i + 1}')
+ # print(best)
+ # print(vocab)
+ # print('\\n')
+
+
+# 한국어
+S1 = '나는 책상 위에 사과를 먹었다'
+S2 = '알고 보니 그 사과는 Jason 것이었다'
+S3 = '그래서 Jason에게 사과를 했다'
+
+token_counts = {}
+index = 0
+
+for sentence in [S1, S2, S3]:
+ tokens = sentence.split()
+ for token in tokens:
+ if token_counts.get(token) == None:
+ token_counts[token] = 1
+ else:
+ token_counts[token] += 1
+
+after_token_count = {}
+for token, counts in token_counts.items():
+ # " ".join(token) : 띄어쓰기로 분리한 token들을 음절로 만듬
+ after_token_count[" ".join(token)] = counts
+
+print(after_token_count)
+
+num_merges = 10
+for i in range(num_merges):
+ pairs = get_stats(after_token_count)
+ best = max(pairs, key=pairs.get)
+ after_token_count = merge_vocab(best, after_token_count)
+
+ print(f'Step {i + 1}')
+ print(best)
+ print(after_token_count)
+ print('\\n')
diff --git a/Pytorch/3_NLP/BPE_Example.png b/Pytorch/3_NLP/BPE_Example.png
new file mode 100644
index 0000000..6533be1
Binary files /dev/null and b/Pytorch/3_NLP/BPE_Example.png differ
diff --git a/Pytorch/3_NLP/BertTokenizer.py b/Pytorch/3_NLP/BertTokenizer.py
new file mode 100644
index 0000000..54b9dc7
--- /dev/null
+++ b/Pytorch/3_NLP/BertTokenizer.py
@@ -0,0 +1,17 @@
+# Bert Tokenizer
+
+from transformers import BertTokenizer
+tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') # - (1)
+
+print(len(tokenizer.vocab))
+
+# (1) : bert-base-uncased 라는 이름의 이미 학습된 모델을 사용, 해당 모델을 사용하려면 모델 학습을 위해 사용했던 Tokenizer도 일치시켜야 함
+
+sentence = "My dog is cute. He likes playing"
+print(tokenizer.tokenize(sentence))
+
+tokenizer = BertTokenizer.from_pretrained('bert-base-multilingual-uncased') # - (2)
+print(len(tokenizer.vocab))
+print(tokenizer.tokenize(sentence))
+
+# (2) : 다양한 언어를 담고 있는 다른 데이터에서 학습한 모델인 'bert-base-multilingual-uncased'의 Tokenizer를 가져와 Tokenization
\ No newline at end of file
diff --git a/Pytorch/3_NLP/Frequency_Based.png b/Pytorch/3_NLP/Frequency_Based.png
new file mode 100644
index 0000000..c45b79a
Binary files /dev/null and b/Pytorch/3_NLP/Frequency_Based.png differ
diff --git a/Pytorch/3_NLP/README.md b/Pytorch/3_NLP/README.md
new file mode 100644
index 0000000..010eeae
--- /dev/null
+++ b/Pytorch/3_NLP/README.md
@@ -0,0 +1,165 @@
+# NLP
+Text 데이터를 분석하고 모델링하는 분야를 자연어 처리(NLP)라 함
+- NLP(Natural Language Processing, NLP): 자연어 처리
+ - NLU(Natural Language Understanding, NLU): 자연어 이해
+ - Text -> Meaning
+ - NLG(Natural Language Generation, NLH): 자연어 생성
+ - Meaning -> Text
+
+
+
+torchtext를 이용해 데이터셋 불러오기
+```
+from torchtext import data
+from torchtext import datasets
+
+# Data Setting
+TEXT = data.Field(lower=True, batch_first=True)
+LABEL = data.Field(sequential=False)
+
+train, test = datasets.IMDB.splits(TEXT, LABEL)
+```
+
+## 문자를 숫자로 표현
+문자를 단순하게 숫자로 바꿔버리는 경우 Input에서 공통적인 패턴(Pattern) 또는 특징(Feature)을 찾기 힘듬
+모델을 잘 만들기 위해서는 Input의 공통적 패턴을 잘 찾아내도록 해줘야 함
+
+단순하게 문자를 숫자로 바꿔 버리게 되면 몇 가지 문제가 생김
+- 내가 만든 사전에 없는 단어가 나오는 경우
+- '철수'나 '철수에게'는 같은 단어 같은데 조사 차이로 나눠야 하는가?
+- 이중적 의미의 단어(예] 사과)를 같게 처리하는 경우
+
+### Corpus & Out-of-Vocabulary(OOV)
+Token을 저장해둔 Vocabulary에 Token이 없어서 처음 본 Token이 나오는 현상을 Out-of-Vocabulary(OOV)라 함
+이런 상황을 대비해 특수한 Token을 만들어 사용( token)
+
+새로 나온 단어마다 Token으로 처리하는 것보다 애초에 사전을 풍부하게 만들면 OOV 문제는 해결됨 --> 그러기 위해선 다양한 Token을 많이 모을 수 있는 많은 문장이 필요. Token을 모으기 위해 모아 놓은 문장의 모음을 **말뭉치(Corpus)** 라 함
+
+Corpus를 잘 만드는 것도 모델 성능 향상의 큰 요인
+
+하지만 Corpus가 커질수록 사전의 크기 역시 커짐. 사전의 크기가 커질수록 만드는 모델의 사이즈도 커지게 됨. 너무 커질 경우 메모리에 부담을 주게됨
+
+===> 효율적인 Token 사전을 만들려면 띄어쓰기보다 좋은 Tokenizer가 필요
+
+### Byte Pair Encoding(BPE)
+띄어쓰기는 가장 쉬운 방법이긴 하지만 일상의 언어를 분석하는 과정에서는 비효율적 방법
+
+한국어의 단위는 길이 순으로 **음운 < 음절 < 형태소 < 단어 < 어절 < 문장**
+- 음운: 말의 뜻을 구별해주는 소리의 단위 (예: ㅎ, ㅏ, ㄴ, ㄱ, ㅜ , ㄱ)
+- 음절: 음의 한 마디(예: 한 국)
+- 형태소: 의미를 지닌 최소의 단위
+- 단어: 최소의 자립 형식(예: 먹었다)
+- 어절: 문장을 이루는 마디, 문장 성분의 최소 단위로서 띄어쓰기의 단위
+- 문장: 사고나 감정을 말로 표현할때 완결딘 내용을 나타내는 최소 단위
+
+#### Character based tokenization
+띄어쓰기가 아닌 글자(Character)를 Token으로 사용
+
+Token 사전의 크기가 줄어듬. 한국어에서는 자음과 모음으로 나타낼 수 있는 모든 조합을 생각하면되고 영어에서는 소문자 기준 26개의 알파벳만 생각하면 됨
+
+OOV 현상은 사실상 없앨수 있게 됨. 인터넷에서 만들어지는 단축어와 신조어 등의 모든 글자를 표현할 수 있음
+
+하지만 실제 딥러닝 모델에서 사용하는 Token은 대부분 글자 단위가 아님. 글자 단위의 Tokenization의 문제 중 하나는 표현법에 대한 학습이 어렵다는 것. 글자 하나는 보통 특정 의미를 갖고 있지 않음
+
+특정 글자의 연속된 나열이 특정 의미를 나타내고 이를 패턴으로 학습해 의미를 만들고 각 의미를 조합해 문장의 의미를 만들어 내야 함
+
+글자보단 의미를 가진 단위이자 기존의 띄어쓰기보다 효과적 방법을 찾아내는 연구가 진행
+
+#### n-gram Tokenization
+Token이 글자라면 OOV 현상이 벌어지는 일은 없지만 글자 하나에는 의미가 없기 때문에 모델의 구조를 만들 때 글자의 특정 연속성이 의미를 가진 단어라는 것을 학습하게 만들고 그것으로 문장이나 문단과 같은 더 긴 형태의 글을 이해하도록 만들어야 함
+
+--> 글자보다는 좀 더 긴 형태의 Token을 만들어내기 위해 사용하는 방법 중 한 가지가 n-gram
+
+But n-gram을 사용할 경우 쓸모 없는 조합이 너무 많이 생성되게 됨. 특히 한국어의 경우 어미 변화가 매우 다양한데, 의미는 비슷하지만 서로 다른 Token이 아주 많이 생겨나게 됨. 그리고 Token 사전이 과하게 커짐
+
+==> n-gram의 이점을 챙기면서 그중 의미가 있는 것들만 Token으로 사용하는 방법이 **Byte Pair Encoding(BPE)**
+
+#### Byte Pair Encoding(BPE)
+BPE는 Data Compression 분야에서 사용됐던 개념으로 반복적으로 나오는 데이터의 연속된 패턴을 치환하는 방식을 사용해 데이터를 좀 더 효율적으로 저장하는 개념
+
+n-gram에서 쓸모없이 많아지는 연속된 글자의 나열이 아닌 여러 번 나타나는 글자의 나열은 의미가 있다 생각해 따로 Token으로 만드는 방식
+
+단어를 Subword로 한 번 더 나눠 표현함으로써 더 효율적인 Token을 만들 수 있게됨
+
+
+
+
+BPE Algorithm
+1. 단어 횟수를 기록한 사전을 만듬(띄어쓰기 기반의 Tokenization), 이때 사전의 단어 글자는 모두 띄어 표현
+2. 각 단어에 대해 연속된 2개의 글자의 숫자를 세어 가장 많이 나오는 글자 2개의 조합을 찾음(Character bi-gram)
+3. 두 글자를 합쳐 기존의 사전의 단어를 수정
+4. 미리 정해 놓은 횟수만큼 2~3번의 과정을 반복
+
+- [CODE] : BPE.py
+- [CODE] : Sentencepiece.py
+- [CODE] : BertTokenizer.py
+
+## Word Embedding
+문자를 그대로 숫자로 표현하게 되면 딥러닝 모델 학습에 문제가 생김
+
+1 + 1 = 2 이지만 1이 '책상'을 의미하고 2가 '위에'를 의미한다면 그렇다고 해서 '책상' 두개가 '위에'를 의미하지는 않음 (1 + 1 = 2)
+
+이와 같은 문제가 일어나는 이유는 Token을 유한한 개수를 가진 변수로 생각하고 범주형 자료(Categorical Data)로 바로 표현했기 때문
+
+==> 이러한 문제를 해결하기 위해 범주형 자료 변수를 표현하는 방법 중 한가지가 바로 원-핫 인코딩(통계학에서는 가변수(Dummy Variables)라고 표현)
+
+### 원-핫 인코딩
+원-핫 인코딩을 위해선 Corpus를 모두 Tokenization해 Vocabulary를 만들고 각 Token마다 Index를 정해야 함
+
+
+
+
+- [CODE] one_hot_encoding.py
+
+원-핫 인코딩 말고도 Frequency-based Method와 Dense Embedding Method로 나눠 볼 수 있음
+
+### Frequency-based Method
+단어의 횟수를 기반으로 표현하는 방식(Frequency-based Method)은 말 그대로 문장에 있는 Token의 등장 횟수를 세어 표현하는 방식
+
+Token의 횟수에만 집중하기 때문에 주머니 같은 곳에 Token을 모아놓고 단어를 뽑아 문장을 표현한다해서 **Bag of Words(BoW)** 라 표현
+
+표현 방법은 Token을 원-핫 인코딩한 결과를 문장마다 합하면 쉽게 나타낼 수 있음
+
+
+
+
+원-핫 인코딩을 거쳐가지 않고 {key: token, value: count} 형식으로 문장이나 문단의 Token을 직접 세어 표현가능
+
+Frequency-based Method 방법에는 한 가지 문제가 있는데 영어의 "a", "an", "of"와 같은 특정 token은 문장이나 문단과 상관없이 많이 등장할 수 밖에 없음. 따라서 해당 Token의 수치는 매우 높은 값을 갖게됨 --> 등장 빈도가 적은 Token에 나쁜 영향을 미칠 수밖에 없음
+
+==> 이러한 문제를 해결하기 위한 방법으로 **TF-IDF(Term Frequency - Inverse Document Frequency)** 라는 표현 방법이 존재
+
+But, Frequency-Based 방법 또한 문제가 있는데 단어의 순서가 무시된다는 점.
+
+우리가 문장을 구성할때 특정 Token이 나올 확률은 이전 Token에 영향을 받을 수 밖에 없음. 하지만 횟수 기반의 표현 방식은 Token의 순서 정보를 전혀 담을 수 없어 NLG와 같이 새로운 문장을 생성해야 하는 Task에서 사용이 어려움
+
+### Dense Representation
+원-핫 인코딩을 이용한 문자 표현의 문제점 중 한 가지는 변수의 희소성.
+
+모든 Token의 개수인 V만큼의 벡터를 만드는 것뿐 아니라 대부분 0이면서 극소수의 위치에만 값을 가지고 있기 때문에 상당히 큰 메모리 사용량일 필요하지만 대부분은 0으로 돼있어 비효율적(파이썬의 sparse 라이브러리를 이용해 계산이나 메모리 사용을 효율화할 순 있음)
+
+### Word2vec: idea
+Word2vec 방법은 vector("King") - vector("Man") + vector("Women") = vector("Queen") 이라는 예제를 이용해 관계를 연산으로 설명할 수 있는 벡터표현이 가능하다는 것을 보여 많은 관심을 갖게 됨
+
+먼저 Word2vec 모델 학습에는 'Token의 의미는 주변 Token의 정보로 표현된다' 라 가정
+
+==> 특정 Token을 기준으로 주변에 비슷한 Token이 있다면 해당 Token은 비슷한 위치의 벡터로 표현되도록 학습
+
+Word2vec 학습 과정을 **CBOW(Continuous Bag-of-Words Model)** 와 **Skip-Gram** 이 두가지 방법 모두 공통적으로는 문장을 윈도우 형태로 부분만 보는 것을 기본으로 함
+
+기준 Token의 양옆 Token을 포함한 윈도우가 이동하면서 윈도우 속 Token과 기준 Token의 관계를 학습시키는 과정을 진행
+
+주변 Token을 **Context** , 기준 Token을 **Target** 이라 표현
+
+- CBoW
+ - Context Token의 벡터로 변환해 더한 후 Target Token을 맞춤
+- Skip-Gram
+ - Target Token을 벡터로 변환 후 Context Token을 맞춤
+
+
+모델 구조
+
+
+
+
+#### 학습 과정
diff --git a/Pytorch/3_NLP/Sentencepiece.py b/Pytorch/3_NLP/Sentencepiece.py
new file mode 100644
index 0000000..3aead99
--- /dev/null
+++ b/Pytorch/3_NLP/Sentencepiece.py
@@ -0,0 +1,6 @@
+# https://github.com/google/sentencepiece
+
+import sentencepiece as spm
+s = spm.SentencePieceProcessor(model_file='spm.model')
+for n in range(5):
+ s.encode('New York', out_type=str, enable_sampling=True, alpha=0.1, nbest=-1)
\ No newline at end of file
diff --git a/Pytorch/3_NLP/one_hot_encoding.png b/Pytorch/3_NLP/one_hot_encoding.png
new file mode 100644
index 0000000..4fb23e2
Binary files /dev/null and b/Pytorch/3_NLP/one_hot_encoding.png differ
diff --git a/Pytorch/3_NLP/one_hot_encoding.py b/Pytorch/3_NLP/one_hot_encoding.py
new file mode 100644
index 0000000..8f787ea
--- /dev/null
+++ b/Pytorch/3_NLP/one_hot_encoding.py
@@ -0,0 +1,41 @@
+S1 = "나는 책상 위에 사과를 먹었다"
+S2 = "알고 보니 그 사과는 Json 것이었다"
+S3 = "그래서 Jason에게 사과를 했다"
+
+token2idx = {}
+index = 0
+
+for sentence in [S1, S2, S3]:
+ tokens = sentence.split()
+ for token in tokens:
+ if token2idx.get(token) == None:
+ token2idx[token] = index
+ index += 1
+
+print(token2idx)
+print('\n')
+
+V = len(token2idx)
+
+token2vec = [([0 if i != idx else 1 for i in range(V)], idx, token) for token, idx in token2idx.items()]
+for x in token2vec:
+ print("\t".join([str(y) for y in x]))
+print('\n')
+
+# python numpy를 이용해 문장을 원-핫 인코딩으로 바꾸는 방법
+import numpy as np
+
+for sentence in [S1, S2, S3]:
+ onehot_s = []
+ tokens = sentence.split()
+ for token in tokens:
+ if token2idx.get(token) != None:
+ vector = np.zeros((1,V))
+ vector[:,token2idx[token]] = 1
+ onehot_s.append(vector)
+ else:
+ print("UNK")
+
+ print(f"{sentence}: ")
+ print(np.concatenate(onehot_s, axis = 0))
+ print('\n')
\ No newline at end of file
diff --git a/Pytorch/3_NLP/word2vec_model.png b/Pytorch/3_NLP/word2vec_model.png
new file mode 100644
index 0000000..3816634
Binary files /dev/null and b/Pytorch/3_NLP/word2vec_model.png differ
diff --git a/README.md b/README.md
index 7c5ce19..342161c 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,34 @@
# DeepLearning 요약
-DeepLearning을 연구하고 학습해오며 배웠던 것들을 정리하는 공간.
+DeepLearning을 학습해오며 배웠던 것들을 정리하는 공간.
## Structure
- Theory : 이론 위주 학습 정리
- Pytorch : Pytorch를 이용해 신경망 구현
- Python : Python으로 신경망 구현
+- TensorFlow : Keras Tensorflow로 신경망 구현
+
+## Deep Learning 전체 프로세스
+
+
## Index
+- 딥러닝 모델 학습 전 알아두어야 할 이론
+ - [확률적 경사 하강법(SGD) 이란?](Theory/02_StochasticGradientDescent/)
+ - [역전파법 이란?](Theory/03_Backpropagation/)
+ - [역전파법 구현 - Python](Python/01_Backpropagation_Theory/)
+ - [텐서, 손실함수, 옵티아미저란?](TensorFlow/0_dl_math/)
+- 앞먹임 신경망
+ - [앞먹임 신경망 이론(Feedforward Neural Network) 이란?](Theory/01_FeedforwardNeuralNetwork/)
+ - [앞먹임 신경망 구현 - Keras](TensorFlow/1_BasicNeuralNet/)
+ - [앞먹임 신경망 구현 - Pytorch](Pytorch/1_MLP/)
+- 자기부호화기
+ - [자기부호화기(AutoEncoder) 란?](Theory/04_AutoEncoder/)
+ - [자기부호화기(AutoEncoder) 구현 - Pytorch](Pytorch/1_MLP/1_AutoEncoder.ipynb)
+- 합성곱 신경망
+ - [합성곱 신경망(CNN) 이란?](Theory/05_CNN/)
+ - [CNN 구현 - Keras](TensorFlow/2_CNN/)
+ - [CNN 구현 - Pytorch](Pytorch/2_CNN/)
+- 재귀 신경망
+ - [재귀 신경망(RNN) 이란?](Theory/06_RNN/)
+ - [재귀 신경망 구현 - Keras](TensorFlow/3_RNN/)
+ - [재귀 신경망 구현 - Pytorch](Pytorch/3_NLP/)
\ No newline at end of file
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/.gitignore b/TFLite/SpeechRecognition/aos_speech_commands/.gitignore
new file mode 100755
index 0000000..23a894d
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/.gitignore
@@ -0,0 +1,16 @@
+*.iml
+.gradle
+/local.properties
+/.idea/caches
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+/.idea/navEditor.xml
+/.idea/assetWizardSettings.xml
+.DS_Store
+/build
+/captures
+.externalNativeBuild
+
+/.gradle/
+/.idea
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/.gitignore b/TFLite/SpeechRecognition/aos_speech_commands/app/.gitignore
new file mode 100755
index 0000000..23a894d
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/app/.gitignore
@@ -0,0 +1,16 @@
+*.iml
+.gradle
+/local.properties
+/.idea/caches
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+/.idea/navEditor.xml
+/.idea/assetWizardSettings.xml
+.DS_Store
+/build
+/captures
+.externalNativeBuild
+
+/.gradle/
+/.idea
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/build.gradle b/TFLite/SpeechRecognition/aos_speech_commands/app/build.gradle
new file mode 100755
index 0000000..907fd6b
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/app/build.gradle
@@ -0,0 +1,53 @@
+apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android-extensions'
+apply plugin: 'kotlin-android'
+apply plugin: 'de.undercouch.download'
+
+android {
+ compileSdkVersion 28
+ buildToolsVersion '28.0.3'
+ defaultConfig {
+ applicationId "com.google.tflite.speechrecognition"
+ minSdkVersion 21
+ targetSdkVersion 28
+ versionCode 1
+ versionName "1.0"
+ testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+ }
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ }
+ }
+ aaptOptions {
+ noCompress "tflite"
+ }
+ compileOptions {
+ sourceCompatibility = '1.8'
+ targetCompatibility = '1.8'
+ }
+}
+
+// import DownloadModels task
+project.ext.ASSET_DIR = projectDir.toString() + '/src/main/assets'
+project.ext.TMP_DIR = project.buildDir.toString() + '/downloads'
+
+// Download default models; if you wish to use your own models then
+// place them in the "assets" directory and comment out this line.
+//apply from: "download_model.gradle"
+
+apply from:'download_model.gradle'
+
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation 'com.android.support:appcompat-v7:28.0.0'
+ implementation 'com.android.support.constraint:constraint-layout:1.1.3'
+ implementation 'com.android.support:design:28.0.0'
+ implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly'
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+}
+repositories {
+ mavenCentral()
+}
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/download_model.gradle b/TFLite/SpeechRecognition/aos_speech_commands/app/download_model.gradle
new file mode 100755
index 0000000..7d3d49d
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/app/download_model.gradle
@@ -0,0 +1,26 @@
+
+task downloadZipFile(type: Download) {
+ src 'http://storage.googleapis.com/download.tensorflow.org/models/tflite/conv_actions_tflite.zip'
+ dest new File(buildDir, 'zips/')
+ overwrite true
+}
+
+
+task downloadAndUnzipFile(dependsOn: downloadZipFile, type: Copy) {
+ from zipTree(downloadZipFile.dest)
+ into project.ext.ASSET_DIR
+}
+
+
+task extractModels(type: Copy) {
+ dependsOn downloadAndUnzipFile
+}
+
+tasks.whenTaskAdded { task ->
+ if (task.name == 'assembleDebug') {
+ task.dependsOn 'extractModels'
+ }
+ if (task.name == 'assembleRelease') {
+ task.dependsOn 'extractModels'
+ }
+}
\ No newline at end of file
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/proguard-rules.pro b/TFLite/SpeechRecognition/aos_speech_commands/app/proguard-rules.pro
new file mode 100755
index 0000000..f1b4245
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/app/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/androidTest/java/com/google/tflite/speechrecognition/ExampleInstrumentedTest.java b/TFLite/SpeechRecognition/aos_speech_commands/app/src/androidTest/java/com/google/tflite/speechrecognition/ExampleInstrumentedTest.java
new file mode 100755
index 0000000..ca91cff
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/app/src/androidTest/java/com/google/tflite/speechrecognition/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.google.tflite.speechrecognition;
+
+import android.content.Context;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getTargetContext();
+
+ assertEquals("com.google.tflite.speechrecognition", appContext.getPackageName());
+ }
+}
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/AndroidManifest.xml b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/AndroidManifest.xml
new file mode 100755
index 0000000..daee6e0
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/AndroidManifest.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/assets/conv_actions_labels.txt b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/assets/conv_actions_labels.txt
new file mode 100755
index 0000000..ba41645
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/assets/conv_actions_labels.txt
@@ -0,0 +1,12 @@
+_silence_
+_unknown_
+yes
+no
+up
+down
+left
+right
+on
+off
+stop
+go
\ No newline at end of file
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/java/com/google/tflite/speechrecognition/MainActivity.kt b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/java/com/google/tflite/speechrecognition/MainActivity.kt
new file mode 100755
index 0000000..a4bdd12
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/java/com/google/tflite/speechrecognition/MainActivity.kt
@@ -0,0 +1,374 @@
+/*
+ * Copyright 2019 The TensorFlow Authors. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* Demonstrates how to run an audio recognition model in Android.
+
+This example loads a simple speech recognition model trained by the tutorial at
+https://www.tensorflow.org/tutorials/audio_training
+
+The model files should be downloaded automatically from the TensorFlow website,
+but if you have a custom model you can update the LABEL_FILENAME and
+MODEL_FILENAME constants to point to your own files.
+
+The example application displays a list view with all of the known audio labels,
+and highlights each one when it thinks it has detected one through the
+microphone. The averaging of results to give a more reliable signal happens in
+the RecognizeCommands helper class.
+*/
+
+package com.google.tflite.speechrecognition
+
+import android.app.Activity
+import android.content.pm.PackageManager
+import android.media.AudioFormat
+import android.media.AudioRecord
+import android.media.MediaRecorder
+import android.os.Build
+import android.os.Bundle
+import android.support.v4.content.ContextCompat
+import android.util.Log
+import android.widget.TextView
+import com.google.tflite.speechrecognition.tflite.RecognizeCommands
+import com.google.tflite.speechrecognition.tflite.SpeechInterpreter
+import org.tensorflow.lite.Interpreter
+import java.io.BufferedReader
+import java.io.IOException
+import java.io.InputStreamReader
+import java.io.Reader
+import java.util.*
+import java.util.concurrent.locks.ReentrantLock
+import kotlin.math.max
+import kotlin.math.roundToInt
+
+/**
+ * An activity that listens for audio and then uses a TensorFlow model to detect particular classes,
+ * by default a small set of action words.
+ */
+class MainActivity : Activity() {
+
+
+ private var selectedTextView: TextView? = null
+ private var lastProcessingTimeMs: Long = 0
+ private lateinit var speechInterpreter: SpeechInterpreter
+
+ // Working variables.
+ private var recordingBuffer = ShortArray(RECORDING_LENGTH)
+ private var recordingOffset = 0
+ private var shouldContinue = true
+ private var recordingThread: Thread? = null
+ private var shouldContinueRecognition = true
+ private var recognitionThread: Thread? = null
+ private val recordingBufferLock = ReentrantLock()
+
+ private val labels = ArrayList()
+ private val displayedLabels = ArrayList()
+ private var tfLite: Interpreter? = null
+
+ private var yesTextView: TextView? = null
+ private var noTextView: TextView? = null
+ private var upTextView: TextView? = null
+ private var downTextView: TextView? = null
+ private var leftTextView: TextView? = null
+ private var rightTextView: TextView? = null
+ private var onTextView: TextView? = null
+ private var offTextView: TextView? = null
+ private var stopTextView: TextView? = null
+ private var goTextView: TextView? = null
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_main)
+
+ val actualLabelFilename = LABEL_FILENAME.split("file:///android_asset/".toRegex()).toTypedArray()[1]
+ Log.i(LOG_TAG, "Reading labels from: $actualLabelFilename")
+ val br: BufferedReader?
+ try {
+ br = BufferedReader(InputStreamReader(assets.open(actualLabelFilename)) as Reader?)
+ var line: String?
+ do {
+ line = br.readLine()
+ if (line != null) {
+ labels.add(line)
+ if (line[0] != '_') {
+ displayedLabels.add(line.substring(0, 1).toUpperCase() + line.substring(1))
+ }
+ }
+ } while (line != null)
+ br.close()
+ } catch (e: IOException) {
+ throw RuntimeException("Problem reading label file!", e)
+ }
+
+ val actualModelFilename = MODEL_FILENAME.split("file:///android_asset/".toRegex()).toTypedArray()[1]
+ speechInterpreter = SpeechInterpreter(assets, actualModelFilename)
+ try {
+ tfLite = speechInterpreter.getTfLite()
+ } catch (e: Exception) {
+ throw RuntimeException(e)
+ }
+
+ tfLite!!.resizeInput(0, intArrayOf(RECORDING_LENGTH, 1))
+ tfLite!!.resizeInput(1, intArrayOf(1))
+
+ // Start the recording and recognition threads.
+ requestMicrophonePermission()
+ startRecording()
+ startRecognition()
+
+ yesTextView = findViewById(R.id.yes)
+ noTextView = findViewById(R.id.no)
+ upTextView = findViewById(R.id.up)
+ downTextView = findViewById(R.id.down)
+ leftTextView = findViewById(R.id.left)
+ rightTextView = findViewById(R.id.right)
+ onTextView = findViewById(R.id.on)
+ offTextView = findViewById(R.id.off)
+ stopTextView = findViewById(R.id.stop)
+ goTextView = findViewById(R.id.go)
+
+ }
+
+ private fun requestMicrophonePermission() {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ requestPermissions(
+ arrayOf(android.Manifest.permission.RECORD_AUDIO), REQUEST_RECORD_AUDIO)
+ }
+ }
+
+ override fun onRequestPermissionsResult(
+ requestCode: Int, permissions: Array, grantResults: IntArray) {
+ if (requestCode == REQUEST_RECORD_AUDIO
+ && grantResults.isNotEmpty()
+ && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ startRecording()
+ startRecognition()
+ }
+ }
+
+ @Synchronized
+ fun startRecording() {
+ if (recordingThread != null) {
+ return
+ }
+ shouldContinue = true
+ recordingThread = Thread(
+ Runnable { record() })
+ recordingThread!!.start()
+ }
+
+ @Synchronized
+ fun stopRecording() {
+ if (recordingThread == null) {
+ return
+ }
+ shouldContinue = false
+ recordingThread = null
+ }
+
+ private fun record() {
+
+ Log.e("amlan", "Recording in progress")
+ android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_AUDIO)
+
+ // Estimate the buffer size we'll need for this device.
+ var bufferSize = AudioRecord.getMinBufferSize(
+ SAMPLE_RATE, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT)
+ if (bufferSize == AudioRecord.ERROR || bufferSize == AudioRecord.ERROR_BAD_VALUE) {
+ bufferSize = SAMPLE_RATE * 2
+ }
+ val audioBuffer = ShortArray(bufferSize / 2)
+
+ val record = AudioRecord(
+ MediaRecorder.AudioSource.DEFAULT,
+ SAMPLE_RATE,
+ AudioFormat.CHANNEL_IN_MONO,
+ AudioFormat.ENCODING_PCM_16BIT,
+ bufferSize)
+
+ if (record.state != AudioRecord.STATE_INITIALIZED) {
+ Log.e(LOG_TAG, "Audio Record can't initialize!")
+ return
+ }
+
+ record.startRecording()
+
+ Log.v(LOG_TAG, "Start recording")
+
+ // Loop, gathering audio data and copying it to a round-robin buffer.
+ while (shouldContinue) {
+ val numberRead = record.read(audioBuffer, 0, audioBuffer.size)
+ val maxLength = recordingBuffer.size
+ val newRecordingOffset = recordingOffset + numberRead
+ val secondCopyLength = max(0, newRecordingOffset - maxLength)
+ val firstCopyLength = numberRead - secondCopyLength
+ // We store off all the data for the recognition thread to access. The ML
+ // thread will copy out of this buffer into its own, while holding the
+ // lock, so this should be thread safe.
+ recordingBufferLock.lock()
+ try {
+ System.arraycopy(audioBuffer, 0, recordingBuffer, recordingOffset, firstCopyLength)
+ System.arraycopy(audioBuffer, firstCopyLength, recordingBuffer, 0, secondCopyLength)
+ recordingOffset = newRecordingOffset % maxLength
+ } finally {
+ recordingBufferLock.unlock()
+ }
+ }
+
+ record.stop()
+ record.release()
+ }
+
+ @Synchronized
+ fun startRecognition() {
+ if (recognitionThread != null) {
+ return
+ }
+ shouldContinueRecognition = true
+ recognitionThread = Thread(
+ Runnable { recognize() })
+ recognitionThread!!.start()
+ }
+
+ private fun recognize() {
+
+ Log.e("amlan", "Start recognition")
+
+ val inputBuffer = ShortArray(RECORDING_LENGTH)
+ val floatInputBuffer = Array(RECORDING_LENGTH) { FloatArray(1) }
+ val outputScores = Array(1) { FloatArray(labels.size) }
+ val sampleRateList = intArrayOf(SAMPLE_RATE)
+
+ // Loop, grabbing recorded data and running the recognition model on it.
+ while (shouldContinueRecognition) {
+ val startTime = Date().time
+ // The recording thread places data in this round-robin buffer, so lock to
+ // make sure there's no writing happening and then copy it to our own
+ // local version.
+ recordingBufferLock.lock()
+ try {
+ val maxLength = recordingBuffer.size
+ val firstCopyLength = maxLength - recordingOffset
+ val secondCopyLength = recordingOffset
+ System.arraycopy(recordingBuffer, recordingOffset, inputBuffer, 0, firstCopyLength)
+ System.arraycopy(recordingBuffer, 0, inputBuffer, firstCopyLength, secondCopyLength)
+ } finally {
+ recordingBufferLock.unlock()
+ }
+
+ // We need to feed in float values between -1.0f and 1.0f, so divide the
+ // signed 16-bit inputs.
+ for (i in 0 until RECORDING_LENGTH) {
+ floatInputBuffer[i][0] = inputBuffer[i] / 32767.0f
+ }
+
+ val inputArray = arrayOf(floatInputBuffer, sampleRateList)
+ val outputMap = HashMap()
+ outputMap[0] = outputScores
+
+ // Run the model.
+ tfLite!!.runForMultipleInputsOutputs(inputArray, outputMap)
+
+ // Use the smoother to figure out if we've had a real recognition event.
+ val currentTime = System.currentTimeMillis()
+ val result: RecognizeCommands.RecognitionResult =
+ speechInterpreter.getRecognizer().processLatestResults(outputScores[0], currentTime)
+ lastProcessingTimeMs = Date().time - startTime
+
+ runOnUiThread { updateUI(result) }
+
+ try {
+ // We don't need to run too frequently, so snooze for a bit.
+ Thread.sleep(MINIMUM_TIME_BETWEEN_SAMPLES_MS)
+ } catch (e: InterruptedException) {
+ // Ignore
+ }
+
+ }
+
+ Log.v(LOG_TAG, "End recognition")
+ }
+
+ private fun updateUI(result: RecognizeCommands.RecognitionResult) {
+ // If we do have a new command, highlight the right list entry.
+ if (!result.foundCommand.startsWith("_") && result.isNewCommand) {
+ var labelIndex: Int = -1
+ for (i in 0 until labels.size) {
+ if (labels[i] == result.foundCommand) {
+ labelIndex = i
+ }
+ }
+
+ when (labelIndex - 2) {
+ 0 ->
+ selectedTextView = yesTextView
+ 1 ->
+ selectedTextView = noTextView
+ 2 ->
+ selectedTextView = upTextView
+ 3 ->
+ selectedTextView = downTextView
+ 4 ->
+ selectedTextView = leftTextView
+ 5 ->
+ selectedTextView = rightTextView
+ 6 ->
+ selectedTextView = onTextView
+ 7 ->
+ selectedTextView = offTextView
+ 8 ->
+ selectedTextView = stopTextView
+ 9 ->
+ selectedTextView = goTextView
+ }
+ highlightRecognizedText(result)
+ }
+ }
+
+ private fun highlightRecognizedText(result: RecognizeCommands.RecognitionResult) {
+ if (selectedTextView != null) {
+ selectedTextView!!.setBackgroundColor(R.drawable.round_corner_text_bg_selected)
+ val score = "${(result.score * 100).roundToInt()}%"
+ selectedTextView!!.text = "${selectedTextView!!.text} \n $score"
+ selectedTextView!!.setTextColor(
+ ContextCompat.getColor(selectedTextView!!.context,android.R.color.holo_orange_light))
+ selectedTextView!!.postDelayed({
+ val origionalString: String =
+ selectedTextView!!.text.toString().replace(score, "").trim()
+ selectedTextView!!.text = origionalString
+ selectedTextView!!.setBackgroundResource(
+ R.drawable.round_corner_text_bg_unselected)
+ selectedTextView!!.setTextColor(
+ ContextCompat.getColor(selectedTextView!!.context,android.R.color.darker_gray))
+ }, 700)
+ }
+ }
+
+ override fun onStop() {
+ super.onStop()
+ stopRecording()
+ }
+
+ companion object {
+ private const val LOG_TAG = "MainActivity"
+ private const val LABEL_FILENAME = "file:///android_asset/conv_actions_labels.txt"
+ private const val SAMPLE_RATE = 16000
+ private const val SAMPLE_DURATION_MS = 1000
+ private const val RECORDING_LENGTH = SAMPLE_RATE * SAMPLE_DURATION_MS / 1000
+ private const val MINIMUM_TIME_BETWEEN_SAMPLES_MS: Long = 30
+ private const val REQUEST_RECORD_AUDIO = 13
+ private const val MODEL_FILENAME = "file:///android_asset/conv_actions_frozen.tflite"
+ }
+}
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/java/com/google/tflite/speechrecognition/tflite/RecognizeCommands.kt b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/java/com/google/tflite/speechrecognition/tflite/RecognizeCommands.kt
new file mode 100755
index 0000000..d5db848
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/java/com/google/tflite/speechrecognition/tflite/RecognizeCommands.kt
@@ -0,0 +1,162 @@
+/*
+ * Copyright 2019 The TensorFlow Authors. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.tflite.speechrecognition.tflite
+
+import android.util.Log
+import android.util.Pair
+import java.util.*
+
+/** Reads in results from an instantaneous audio recognition model and smoothes them over time. */
+class RecognizeCommands(
+ inLabels: List,
+ private val averageWindowDurationMs: Long,
+ private val detectionThreshold: Float,
+ private val suppressionMs: Int,
+ private val minimumCount: Int,
+ private val minimumTimeBetweenSamplesMs: Long) {
+ // Configuration settings.
+ private var labels = ArrayList()
+
+ // Working variables.
+ private val previousResults = ArrayDeque>()
+ private var previousTopLabel: String
+ private val labelsCount: Int
+ private var previousTopLabelTime: Long = 0
+ private var previousTopLabelScore: Float = 0.toFloat()
+
+ init {
+ labels = inLabels as ArrayList
+ labelsCount = inLabels.size
+ previousTopLabel = SILENCE_LABEL
+ previousTopLabelTime = java.lang.Long.MIN_VALUE
+ previousTopLabelScore = 0.0f
+ }
+
+ /** Holds information about what's been recognized. */
+ class RecognitionResult(val foundCommand: String, val score: Float, val isNewCommand: Boolean)
+
+ private class ScoreForSorting(val score: Float, val index: Int) : Comparable {
+
+ override fun compareTo(other: ScoreForSorting): Int {
+ return when {
+ this.score > other.score -> -1
+ this.score < other.score -> 1
+ else -> 0
+ }
+ }
+ }
+
+ fun processLatestResults(currentResults: FloatArray, currentTimeMS: Long): RecognitionResult {
+ if (currentResults.size != labelsCount) {
+ throw RuntimeException(
+ "The results for recognition should contain "
+ + labelsCount
+ + " elements, but there are "
+ + currentResults.size)
+ }
+
+ if (!previousResults.isEmpty() && currentTimeMS < previousResults.first.first) {
+ throw RuntimeException(
+ "You must feed results in increasing time order, but received a timestamp of "
+ + currentTimeMS
+ + " that was earlier than the previous one of "
+ + previousResults.first.first)
+ }
+
+ var howManyResults = previousResults.size
+ // Ignore any results that are coming in too frequently.
+ if (howManyResults > 1) {
+ val timeSinceMostRecent = currentTimeMS - previousResults.last.first
+ if (timeSinceMostRecent < minimumTimeBetweenSamplesMs) {
+ return RecognitionResult(previousTopLabel, previousTopLabelScore, false)
+ }
+ }
+
+ // Add the latest results to the head of the queue.
+ previousResults.addLast(Pair(currentTimeMS, currentResults))
+
+ // Prune any earlier results that are too old for the averaging window.
+ val timeLimit = currentTimeMS - averageWindowDurationMs
+ while (previousResults.first.first < timeLimit) {
+ previousResults.removeFirst()
+ }
+
+ howManyResults = previousResults.size
+
+ // If there are too few results, assume the result will be unreliable and
+ // bail.
+ val earliestTime = previousResults.first.first
+ val samplesDuration = currentTimeMS - earliestTime
+
+ Log.v("Number of Results: ", howManyResults.toString())
+
+ Log.v(
+ "Duration < WD/FRAC?",
+ (samplesDuration < averageWindowDurationMs / MINIMUM_TIME_FRACTION).toString())
+
+ if (howManyResults < minimumCount) {
+ Log.v("RecognizeResult", "Too few results")
+ return RecognitionResult(previousTopLabel, 0.0f, false)
+ }// || (samplesDuration < (averageWindowDurationMs / MINIMUM_TIME_FRACTION))
+
+ // Calculate the average score across all the results in the window.
+ val averageScores = FloatArray(labelsCount)
+ for (previousResult in previousResults) {
+ val scoresTensor = previousResult.second
+ var i = 0
+ while (i < scoresTensor.size) {
+ averageScores[i] += scoresTensor[i] / howManyResults
+ ++i
+ }
+ }
+
+ // Sort the averaged results in descending score order.
+ val sortedAverageScores = arrayOfNulls(labelsCount)
+ for (i in 0 until labelsCount) {
+ sortedAverageScores[i] = ScoreForSorting(averageScores[i], i)
+ }
+ Arrays.sort(sortedAverageScores)
+
+ // See if the latest top score is enough to trigger a detection.
+ val currentTopIndex = sortedAverageScores[0]?.index
+ val currentTopLabel = labels[currentTopIndex!!]
+ val currentTopScore = sortedAverageScores[0]!!.score
+ // If we've recently had another label trigger, assume one that occurs too
+ // soon afterwards is a bad result.
+ val timeSinceLastTop: Long = if (previousTopLabel == SILENCE_LABEL || previousTopLabelTime == java.lang.Long.MIN_VALUE) {
+ java.lang.Long.MAX_VALUE
+ } else {
+ currentTimeMS - previousTopLabelTime
+ }
+ val isNewCommand: Boolean
+ if (currentTopScore > detectionThreshold && timeSinceLastTop > suppressionMs) {
+ previousTopLabel = currentTopLabel
+ previousTopLabelTime = currentTimeMS
+ previousTopLabelScore = currentTopScore
+ isNewCommand = true
+ } else {
+ isNewCommand = false
+ }
+ return RecognitionResult(currentTopLabel, currentTopScore, isNewCommand)
+ }
+
+ companion object {
+
+ private const val SILENCE_LABEL = "_silence_"
+ private const val MINIMUM_TIME_FRACTION: Long = 4
+ }
+}
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/java/com/google/tflite/speechrecognition/tflite/SpeechInterpreter.kt b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/java/com/google/tflite/speechrecognition/tflite/SpeechInterpreter.kt
new file mode 100755
index 0000000..a7d715d
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/java/com/google/tflite/speechrecognition/tflite/SpeechInterpreter.kt
@@ -0,0 +1,62 @@
+package com.google.tflite.speechrecognition.tflite
+
+import android.content.res.AssetManager
+import android.util.Log
+import org.tensorflow.lite.Interpreter
+import java.io.FileInputStream
+import java.io.IOException
+import java.nio.ByteBuffer
+import java.nio.channels.FileChannel
+
+class SpeechInterpreter//Load TFlite
+
+//Read Labels
+(assets: AssetManager, fileName: String) {
+
+ private var recognizeCommands: RecognizeCommands
+ private var tflite: Interpreter
+ private var labels: List
+
+ init {
+ val byteBuffer = loadModelFile(assets, fileName)
+ tflite = Interpreter(byteBuffer)
+ val actualLabelFilename = LABEL_FILENAME.split("file:///android_asset/".toRegex()).toTypedArray()[1]
+ labels = assets.open(actualLabelFilename).bufferedReader().useLines { it.toList() }
+ Log.i(LOG_TAG, "Reading labels from: $actualLabelFilename")
+ recognizeCommands = RecognizeCommands(
+ labels,
+ AVERAGE_WINDOW_DURATION_MS,
+ DETECTION_THRESHOLD,
+ SUPPRESSION_MS,
+ MINIMUM_COUNT,
+ MINIMUM_TIME_BETWEEN_SAMPLES_MS)
+ }
+
+ @Throws(IOException::class)
+ private fun loadModelFile(assets: AssetManager, modelFilename: String): ByteBuffer {
+ val fileDescriptor = assets.openFd(modelFilename)
+ val inputStream = FileInputStream(fileDescriptor.fileDescriptor)
+ val fileChannel = inputStream.channel
+ val startOffset = fileDescriptor.startOffset
+ val declaredLength = fileDescriptor.declaredLength
+ return fileChannel.map(FileChannel.MapMode.READ_ONLY, startOffset, declaredLength)
+ }
+
+ fun getTfLite(): Interpreter {
+ return tflite
+ }
+
+ fun getRecognizer(): RecognizeCommands {
+ return recognizeCommands
+ }
+
+ companion object {
+ private const val LABEL_FILENAME = "file:///android_asset/conv_actions_labels.txt"
+ private const val LOG_TAG: String = "SpeechInterpreter"
+ private const val MINIMUM_TIME_BETWEEN_SAMPLES_MS: Long = 30
+ private const val MINIMUM_COUNT = 3
+ private const val SUPPRESSION_MS = 1500
+ private const val DETECTION_THRESHOLD = 0.50f
+ private const val AVERAGE_WINDOW_DURATION_MS: Long = 1000
+ }
+}
\ No newline at end of file
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100755
index 0000000..1f6bb29
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/drawable-xxxhdpi/tfl_logo.png b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/drawable-xxxhdpi/tfl_logo.png
new file mode 100755
index 0000000..d709f93
Binary files /dev/null and b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/drawable-xxxhdpi/tfl_logo.png differ
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/drawable/border.xml b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/drawable/border.xml
new file mode 100755
index 0000000..f36d15c
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/drawable/border.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/drawable/ic_launcher_background.xml b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100755
index 0000000..d5fccc5
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/drawable/rectangle.xml b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/drawable/rectangle.xml
new file mode 100755
index 0000000..b8f5d35
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/drawable/rectangle.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/drawable/round_corner_text_bg_selected.xml b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/drawable/round_corner_text_bg_selected.xml
new file mode 100755
index 0000000..81a19e4
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/drawable/round_corner_text_bg_selected.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/drawable/round_corner_text_bg_unselected.xml b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/drawable/round_corner_text_bg_unselected.xml
new file mode 100755
index 0000000..2b8f62b
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/drawable/round_corner_text_bg_unselected.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/layout/activity_main.xml b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/layout/activity_main.xml
new file mode 100755
index 0000000..981f0a7
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,210 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100755
index 0000000..eca70cf
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100755
index 0000000..eca70cf
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-hdpi/ic_launcher.png b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100755
index 0000000..898f3ed
Binary files /dev/null and b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100755
index 0000000..dffca36
Binary files /dev/null and b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-mdpi/ic_launcher.png b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100755
index 0000000..64ba76f
Binary files /dev/null and b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100755
index 0000000..dae5e08
Binary files /dev/null and b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100755
index 0000000..e5ed465
Binary files /dev/null and b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100755
index 0000000..14ed0af
Binary files /dev/null and b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100755
index 0000000..b0907ca
Binary files /dev/null and b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100755
index 0000000..d8ae031
Binary files /dev/null and b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100755
index 0000000..2c18de9
Binary files /dev/null and b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100755
index 0000000..beed3cd
Binary files /dev/null and b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/values/colors.xml b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/values/colors.xml
new file mode 100755
index 0000000..705ae92
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+
+
+ #008577
+ #00574B
+ #D81B60
+
+
+ #66000000
+ #303C42
+
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/values/strings.xml b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/values/strings.xml
new file mode 100755
index 0000000..6ab11e4
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ speechrecognition
+
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/values/styles.xml b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/values/styles.xml
new file mode 100755
index 0000000..5885930
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/app/src/main/res/values/styles.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/app/src/test/java/com/google/tflite/speechrecognition/ExampleUnitTest.java b/TFLite/SpeechRecognition/aos_speech_commands/app/src/test/java/com/google/tflite/speechrecognition/ExampleUnitTest.java
new file mode 100755
index 0000000..9b50e67
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/app/src/test/java/com/google/tflite/speechrecognition/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.google.tflite.speechrecognition;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/build.gradle b/TFLite/SpeechRecognition/aos_speech_commands/build.gradle
new file mode 100755
index 0000000..300b294
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/build.gradle
@@ -0,0 +1,29 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+buildscript {
+ ext.kotlin_version = '1.3.41'
+ repositories {
+ google()
+ jcenter()
+
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:3.4.2'
+ classpath 'de.undercouch:gradle-download-task:3.4.3'
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ jcenter()
+
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/gradle.properties b/TFLite/SpeechRecognition/aos_speech_commands/gradle.properties
new file mode 100755
index 0000000..82618ce
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/gradle.properties
@@ -0,0 +1,15 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx1536m
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+
+
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/gradle/wrapper/gradle-wrapper.jar b/TFLite/SpeechRecognition/aos_speech_commands/gradle/wrapper/gradle-wrapper.jar
new file mode 100755
index 0000000..f6b961f
Binary files /dev/null and b/TFLite/SpeechRecognition/aos_speech_commands/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/gradle/wrapper/gradle-wrapper.properties b/TFLite/SpeechRecognition/aos_speech_commands/gradle/wrapper/gradle-wrapper.properties
new file mode 100755
index 0000000..a38979f
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Tue Jul 02 11:49:19 IST 2019
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/gradlew b/TFLite/SpeechRecognition/aos_speech_commands/gradlew
new file mode 100755
index 0000000..cccdd3d
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/gradlew.bat b/TFLite/SpeechRecognition/aos_speech_commands/gradlew.bat
new file mode 100755
index 0000000..f955316
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/TFLite/SpeechRecognition/aos_speech_commands/settings.gradle b/TFLite/SpeechRecognition/aos_speech_commands/settings.gradle
new file mode 100755
index 0000000..e7b4def
--- /dev/null
+++ b/TFLite/SpeechRecognition/aos_speech_commands/settings.gradle
@@ -0,0 +1 @@
+include ':app'
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/RunScripts/download_models.sh b/TFLite/SpeechRecognition/ios_speech_commands/RunScripts/download_models.sh
new file mode 100755
index 0000000..c2682a4
--- /dev/null
+++ b/TFLite/SpeechRecognition/ios_speech_commands/RunScripts/download_models.sh
@@ -0,0 +1,60 @@
+#!/bin/bash
+# Copyright 2019 The TensorFlow Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ==============================================================================
+
+set -ex
+
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+MODELS_URL="https://storage.googleapis.com/download.tensorflow.org/models/tflite/conv_actions_tflite.zip"
+DOWNLOADS_DIR=$(mktemp -d)
+
+cd $SCRIPT_DIR
+
+download_and_extract() {
+ local usage="Usage: download_and_extract URL DIR"
+ local url="${1:?${usage}}"
+ local dir="${2:?${usage}}"
+ echo "downloading ${url}" >&2
+ mkdir -p "${dir}"
+ tempdir=$(mktemp -d)
+ tempdir2=$(mktemp -d)
+
+ curl -L ${url} > ${tempdir}/zipped.zip
+ unzip ${tempdir}/zipped.zip -d ${tempdir2}
+
+ # If the zip file contains nested directories, extract the files from the
+ # inner directory.
+ if ls ${tempdir2}/*/* 1> /dev/null 2>&1; then
+ # unzip has no strip components, so unzip to a temp dir, and move the
+ # files we want from the tempdir to destination.
+ cp -R ${tempdir2}/*/* ${dir}/
+ else
+ cp -R ${tempdir2}/* ${dir}/
+ fi
+ rm -rf ${tempdir2} ${tempdir}
+}
+
+if [ -f ../SpeechCommands/Model/conv_actions_frozen.tflite ]
+then
+echo "File exists. Exiting..."
+exit 0
+fi
+
+download_and_extract "${MODELS_URL}" "${DOWNLOADS_DIR}/models"
+
+file ${DOWNLOADS_DIR}/models
+
+cp ${DOWNLOADS_DIR}/models/* ../SpeechCommands/Model
+
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands.xcodeproj/project.pbxproj b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..972d208
--- /dev/null
+++ b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands.xcodeproj/project.pbxproj
@@ -0,0 +1,503 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 037B349C2B3AA66DB59469A4 /* Pods_SpeechCommands.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B12583630B31828EED9C0D09 /* Pods_SpeechCommands.framework */; };
+ 782D03BD299DE8F80058A182 /* conv_actions_frozen.tflite in Resources */ = {isa = PBXBuildFile; fileRef = 782D03BB299DE8F80058A182 /* conv_actions_frozen.tflite */; };
+ 782D03BE299DE8F80058A182 /* conv_actions_labels.txt in Resources */ = {isa = PBXBuildFile; fileRef = 782D03BC299DE8F80058A182 /* conv_actions_labels.txt */; };
+ AA1C17622186E2F0006F9564 /* WordCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA1C17612186E2F0006F9564 /* WordCell.swift */; };
+ AA1C176C2186FA9E006F9564 /* InfoCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA1C176B2186FA9E006F9564 /* InfoCell.swift */; };
+ AA31546D21612AF7004B2732 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA31546C21612AF7004B2732 /* ViewController.swift */; };
+ AA3BF5DD2154CA9F00796012 /* ModelDataHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA3BF5DC2154CA9F00796012 /* ModelDataHandler.swift */; };
+ AA7006D021526754003E34C0 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA7006CF21526754003E34C0 /* AppDelegate.swift */; };
+ AA7006D721526757003E34C0 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = AA7006D621526757003E34C0 /* Assets.xcassets */; };
+ AA7006DA21526757003E34C0 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA7006D821526757003E34C0 /* LaunchScreen.storyboard */; };
+ AA73C15E216120FA0063142C /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA73C15C216120F90063142C /* Main.storyboard */; };
+ AA73C161216126B20063142C /* AudioInputManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA73C160216126B20063142C /* AudioInputManager.swift */; };
+ AAE67264215DFA1900C6E344 /* RecognizeCommands.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAE67263215DFA1900C6E344 /* RecognizeCommands.swift */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 782D03BB299DE8F80058A182 /* conv_actions_frozen.tflite */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv_actions_frozen.tflite; sourceTree = ""; };
+ 782D03BC299DE8F80058A182 /* conv_actions_labels.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = conv_actions_labels.txt; sourceTree = ""; };
+ A0DC5C2A90328FAA7173C341 /* Pods-SpeechCommands.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SpeechCommands.debug.xcconfig"; path = "Target Support Files/Pods-SpeechCommands/Pods-SpeechCommands.debug.xcconfig"; sourceTree = ""; };
+ AA1C17612186E2F0006F9564 /* WordCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WordCell.swift; sourceTree = ""; };
+ AA1C176B2186FA9E006F9564 /* InfoCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InfoCell.swift; sourceTree = ""; };
+ AA31546C21612AF7004B2732 /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ViewController.swift; path = SpeechCommands/ViewControllers/ViewController.swift; sourceTree = SOURCE_ROOT; };
+ AA3BF5DC2154CA9F00796012 /* ModelDataHandler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ModelDataHandler.swift; sourceTree = ""; };
+ AA7006CC21526754003E34C0 /* SpeechCommands.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SpeechCommands.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ AA7006CF21526754003E34C0 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ AA7006D621526757003E34C0 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ AA7006D921526757003E34C0 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ AA7006DB21526757003E34C0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ AA73C15D216120F90063142C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ AA73C160216126B20063142C /* AudioInputManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioInputManager.swift; sourceTree = ""; };
+ AAE67263215DFA1900C6E344 /* RecognizeCommands.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecognizeCommands.swift; sourceTree = ""; };
+ ADB2EB587E61B830B53EB5A7 /* Pods-SpeechCommands.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SpeechCommands.release.xcconfig"; path = "Target Support Files/Pods-SpeechCommands/Pods-SpeechCommands.release.xcconfig"; sourceTree = ""; };
+ B12583630B31828EED9C0D09 /* Pods_SpeechCommands.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SpeechCommands.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ AA7006C921526754003E34C0 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 037B349C2B3AA66DB59469A4 /* Pods_SpeechCommands.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ AA055D7A2161FC0100B25948 /* ViewControllers */ = {
+ isa = PBXGroup;
+ children = (
+ AA31546C21612AF7004B2732 /* ViewController.swift */,
+ );
+ path = ViewControllers;
+ sourceTree = "";
+ };
+ AA055D83216220E700B25948 /* Model */ = {
+ isa = PBXGroup;
+ children = (
+ 782D03BB299DE8F80058A182 /* conv_actions_frozen.tflite */,
+ 782D03BC299DE8F80058A182 /* conv_actions_labels.txt */,
+ );
+ path = Model;
+ sourceTree = "";
+ };
+ AA1C175D2186E2A2006F9564 /* Cells */ = {
+ isa = PBXGroup;
+ children = (
+ AA1C176B2186FA9E006F9564 /* InfoCell.swift */,
+ AA1C17612186E2F0006F9564 /* WordCell.swift */,
+ );
+ path = Cells;
+ sourceTree = "";
+ };
+ AA3BF5DB2154CA9F00796012 /* ModelDataHandler */ = {
+ isa = PBXGroup;
+ children = (
+ AA3BF5DC2154CA9F00796012 /* ModelDataHandler.swift */,
+ AAE67263215DFA1900C6E344 /* RecognizeCommands.swift */,
+ );
+ path = ModelDataHandler;
+ sourceTree = "";
+ };
+ AA6222D922DDF6D10008F0C0 /* AppDelegate */ = {
+ isa = PBXGroup;
+ children = (
+ AA7006CF21526754003E34C0 /* AppDelegate.swift */,
+ );
+ path = AppDelegate;
+ sourceTree = "";
+ };
+ AA6222DA22DDF7680008F0C0 /* StoryBoards */ = {
+ isa = PBXGroup;
+ children = (
+ AA73C15C216120F90063142C /* Main.storyboard */,
+ AA7006D821526757003E34C0 /* LaunchScreen.storyboard */,
+ );
+ path = StoryBoards;
+ sourceTree = "";
+ };
+ AA7006C321526754003E34C0 = {
+ isa = PBXGroup;
+ children = (
+ AA7006CE21526754003E34C0 /* SpeechCommands */,
+ AA7006CD21526754003E34C0 /* Products */,
+ E5EAF3575C947D42E6C03BE7 /* Frameworks */,
+ B704C45B52307BCBAF717C4A /* Pods */,
+ );
+ sourceTree = "";
+ };
+ AA7006CD21526754003E34C0 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ AA7006CC21526754003E34C0 /* SpeechCommands.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ AA7006CE21526754003E34C0 /* SpeechCommands */ = {
+ isa = PBXGroup;
+ children = (
+ AA6222DA22DDF7680008F0C0 /* StoryBoards */,
+ AA6222D922DDF6D10008F0C0 /* AppDelegate */,
+ AA1C175D2186E2A2006F9564 /* Cells */,
+ AA055D83216220E700B25948 /* Model */,
+ AA055D7A2161FC0100B25948 /* ViewControllers */,
+ AA73C15F2161269B0063142C /* AudioInputManager */,
+ AA3BF5DB2154CA9F00796012 /* ModelDataHandler */,
+ AA7006D621526757003E34C0 /* Assets.xcassets */,
+ AA7006DB21526757003E34C0 /* Info.plist */,
+ );
+ path = SpeechCommands;
+ sourceTree = "";
+ };
+ AA73C15F2161269B0063142C /* AudioInputManager */ = {
+ isa = PBXGroup;
+ children = (
+ AA73C160216126B20063142C /* AudioInputManager.swift */,
+ );
+ path = AudioInputManager;
+ sourceTree = "";
+ };
+ B704C45B52307BCBAF717C4A /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ A0DC5C2A90328FAA7173C341 /* Pods-SpeechCommands.debug.xcconfig */,
+ ADB2EB587E61B830B53EB5A7 /* Pods-SpeechCommands.release.xcconfig */,
+ );
+ path = Pods;
+ sourceTree = "";
+ };
+ E5EAF3575C947D42E6C03BE7 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ B12583630B31828EED9C0D09 /* Pods_SpeechCommands.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ AA7006CB21526754003E34C0 /* SpeechCommands */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = AA7006F421526757003E34C0 /* Build configuration list for PBXNativeTarget "SpeechCommands" */;
+ buildPhases = (
+ 330528C4875352C6F35F5F29 /* [CP] Check Pods Manifest.lock */,
+ AA31546E2161EE1F004B2732 /* ShellScript */,
+ AA7006C821526754003E34C0 /* Sources */,
+ AA7006C921526754003E34C0 /* Frameworks */,
+ AA7006CA21526754003E34C0 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = SpeechCommands;
+ productName = SpeechCommands;
+ productReference = AA7006CC21526754003E34C0 /* SpeechCommands.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ AA7006C421526754003E34C0 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastSwiftUpdateCheck = 0940;
+ LastUpgradeCheck = 0940;
+ ORGANIZATIONNAME = "Y Media Labs";
+ TargetAttributes = {
+ AA7006CB21526754003E34C0 = {
+ CreatedOnToolsVersion = 9.4.1;
+ LastSwiftMigration = 0940;
+ };
+ };
+ };
+ buildConfigurationList = AA7006C721526754003E34C0 /* Build configuration list for PBXProject "SpeechCommands" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = AA7006C321526754003E34C0;
+ productRefGroup = AA7006CD21526754003E34C0 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ AA7006CB21526754003E34C0 /* SpeechCommands */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ AA7006CA21526754003E34C0 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AA73C15E216120FA0063142C /* Main.storyboard in Resources */,
+ 782D03BD299DE8F80058A182 /* conv_actions_frozen.tflite in Resources */,
+ AA7006DA21526757003E34C0 /* LaunchScreen.storyboard in Resources */,
+ AA7006D721526757003E34C0 /* Assets.xcassets in Resources */,
+ 782D03BE299DE8F80058A182 /* conv_actions_labels.txt in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 330528C4875352C6F35F5F29 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-SpeechCommands-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+ AA31546E2161EE1F004B2732 /* ShellScript */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 12;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ );
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "$SRCROOT/RunScripts/download_models.sh\n";
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ AA7006C821526754003E34C0 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AA7006D021526754003E34C0 /* AppDelegate.swift in Sources */,
+ AAE67264215DFA1900C6E344 /* RecognizeCommands.swift in Sources */,
+ AA31546D21612AF7004B2732 /* ViewController.swift in Sources */,
+ AA3BF5DD2154CA9F00796012 /* ModelDataHandler.swift in Sources */,
+ AA1C17622186E2F0006F9564 /* WordCell.swift in Sources */,
+ AA73C161216126B20063142C /* AudioInputManager.swift in Sources */,
+ AA1C176C2186FA9E006F9564 /* InfoCell.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ AA7006D821526757003E34C0 /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ AA7006D921526757003E34C0 /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+ AA73C15C216120F90063142C /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ AA73C15D216120F90063142C /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ AA7006F221526757003E34C0 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.4;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = "";
+ };
+ name = Debug;
+ };
+ AA7006F321526757003E34C0 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.4;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ SWIFT_VERSION = "";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ AA7006F521526757003E34C0 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = A0DC5C2A90328FAA7173C341 /* Pods-SpeechCommands.debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = KYV3CSY2F3;
+ INFOPLIST_FILE = SpeechCommands/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = org.tensorflow.SpeechCommands;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 4.2;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ AA7006F621526757003E34C0 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = ADB2EB587E61B830B53EB5A7 /* Pods-SpeechCommands.release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = KYV3CSY2F3;
+ INFOPLIST_FILE = SpeechCommands/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = org.tensorflow.SpeechCommands;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "";
+ SWIFT_VERSION = 4.2;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ AA7006C721526754003E34C0 /* Build configuration list for PBXProject "SpeechCommands" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ AA7006F221526757003E34C0 /* Debug */,
+ AA7006F321526757003E34C0 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ AA7006F421526757003E34C0 /* Build configuration list for PBXNativeTarget "SpeechCommands" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ AA7006F521526757003E34C0 /* Debug */,
+ AA7006F621526757003E34C0 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = AA7006C421526754003E34C0 /* Project object */;
+}
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands.xcodeproj/xcuserdata/hangyojeong.xcuserdatad/xcschemes/xcschememanagement.plist b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands.xcodeproj/xcuserdata/hangyojeong.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 0000000..d7294ce
--- /dev/null
+++ b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands.xcodeproj/xcuserdata/hangyojeong.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,14 @@
+
+
+
+
+ SchemeUserState
+
+ SpeechCommands.xcscheme_^#shared#^_
+
+ orderHint
+ 3
+
+
+
+
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands.xcworkspace/contents.xcworkspacedata b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..401f0ac
--- /dev/null
+++ b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/AppDelegate/AppDelegate.swift b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/AppDelegate/AppDelegate.swift
new file mode 100755
index 0000000..58ca01e
--- /dev/null
+++ b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/AppDelegate/AppDelegate.swift
@@ -0,0 +1,27 @@
+// Copyright 2019 The TensorFlow Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import UIKit
+
+@UIApplicationMain
+class AppDelegate: UIResponder, UIApplicationDelegate {
+ var window: UIWindow?
+
+ func application(
+ _ application: UIApplication,
+ didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
+ ) -> Bool {
+ return true
+ }
+}
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/AppIcon.appiconset/Contents.json b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100755
index 0000000..739b7bd
--- /dev/null
+++ b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,103 @@
+{
+ "images" : [
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "3x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "icn_120x120-1.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "icn_180x180.png",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "20x20",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "20x20",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "icn_76x76.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "icn_152x152.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "83.5x83.5",
+ "idiom" : "ipad",
+ "filename" : "icn_167x167.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ios-marketing",
+ "size" : "1024x1024",
+ "scale" : "1x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/AppIcon.appiconset/icn_120x120-1.png b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/AppIcon.appiconset/icn_120x120-1.png
new file mode 100755
index 0000000..4051695
Binary files /dev/null and b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/AppIcon.appiconset/icn_120x120-1.png differ
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/AppIcon.appiconset/icn_152x152.png b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/AppIcon.appiconset/icn_152x152.png
new file mode 100755
index 0000000..9da9492
Binary files /dev/null and b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/AppIcon.appiconset/icn_152x152.png differ
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/AppIcon.appiconset/icn_167x167.png b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/AppIcon.appiconset/icn_167x167.png
new file mode 100755
index 0000000..fce53a6
Binary files /dev/null and b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/AppIcon.appiconset/icn_167x167.png differ
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/AppIcon.appiconset/icn_180x180.png b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/AppIcon.appiconset/icn_180x180.png
new file mode 100755
index 0000000..e944298
Binary files /dev/null and b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/AppIcon.appiconset/icn_180x180.png differ
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/AppIcon.appiconset/icn_76x76.png b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/AppIcon.appiconset/icn_76x76.png
new file mode 100755
index 0000000..5ee009e
Binary files /dev/null and b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/AppIcon.appiconset/icn_76x76.png differ
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/Contents.json b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/Contents.json
new file mode 100755
index 0000000..da4a164
--- /dev/null
+++ b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/base.imageset/Contents.json b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/base.imageset/Contents.json
new file mode 100755
index 0000000..91009c3
--- /dev/null
+++ b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/base.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "base.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "base@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "base@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/base.imageset/base.png b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/base.imageset/base.png
new file mode 100755
index 0000000..03bb5f3
Binary files /dev/null and b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/base.imageset/base.png differ
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/base.imageset/base@2x.png b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/base.imageset/base@2x.png
new file mode 100755
index 0000000..e75c8c4
Binary files /dev/null and b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/base.imageset/base@2x.png differ
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/base.imageset/base@3x.png b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/base.imageset/base@3x.png
new file mode 100755
index 0000000..a5b383b
Binary files /dev/null and b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/base.imageset/base@3x.png differ
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/border_color.colorset/Contents.json b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/border_color.colorset/Contents.json
new file mode 100755
index 0000000..38eeabf
--- /dev/null
+++ b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/border_color.colorset/Contents.json
@@ -0,0 +1,20 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ },
+ "colors" : [
+ {
+ "idiom" : "universal",
+ "color" : {
+ "color-space" : "srgb",
+ "components" : {
+ "red" : "0xC7",
+ "alpha" : "1.000",
+ "blue" : "0xD8",
+ "green" : "0xD0"
+ }
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/inner_shadow_color.colorset/Contents.json b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/inner_shadow_color.colorset/Contents.json
new file mode 100755
index 0000000..4f607bf
--- /dev/null
+++ b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/inner_shadow_color.colorset/Contents.json
@@ -0,0 +1,20 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ },
+ "colors" : [
+ {
+ "idiom" : "universal",
+ "color" : {
+ "color-space" : "srgb",
+ "components" : {
+ "red" : "250",
+ "alpha" : "1.000",
+ "blue" : "0",
+ "green" : "141"
+ }
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/tfl_logo.imageset/Contents.json b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/tfl_logo.imageset/Contents.json
new file mode 100755
index 0000000..7eb9d1c
--- /dev/null
+++ b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/tfl_logo.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "tfl_logo.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "tfl_logo@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "tfl_logo@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/tfl_logo.imageset/tfl_logo.png b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/tfl_logo.imageset/tfl_logo.png
new file mode 100755
index 0000000..ccd78be
Binary files /dev/null and b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/tfl_logo.imageset/tfl_logo.png differ
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/tfl_logo.imageset/tfl_logo@2x.png b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/tfl_logo.imageset/tfl_logo@2x.png
new file mode 100755
index 0000000..a7b21bb
Binary files /dev/null and b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/tfl_logo.imageset/tfl_logo@2x.png differ
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/tfl_logo.imageset/tfl_logo@3x.png b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/tfl_logo.imageset/tfl_logo@3x.png
new file mode 100755
index 0000000..d709f93
Binary files /dev/null and b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Assets.xcassets/tfl_logo.imageset/tfl_logo@3x.png differ
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/AudioInputManager/AudioInputManager.swift b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/AudioInputManager/AudioInputManager.swift
new file mode 100755
index 0000000..60c1f98
--- /dev/null
+++ b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/AudioInputManager/AudioInputManager.swift
@@ -0,0 +1,126 @@
+// Copyright 2019 The TensorFlow Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import UIKit
+import AVFoundation
+
+
+protocol AudioInputManagerDelegate {
+ func showCameraPermissionsDeniedAlert()
+ func didOutput(channelData: [Int16])
+}
+
+class AudioInputManager: NSObject {
+
+ // MARK: Constants
+ let bufferSize: Int
+ private let sampleRate: Int
+
+ var delegate: AudioInputManagerDelegate?
+
+ // MARK: AVAudioEngine
+ private var audioEngine: AVAudioEngine = AVAudioEngine()
+
+ // MARK: Instance Variables
+ private let conversionQueue = DispatchQueue(label: "conversionQueue")
+
+ /**
+ The initializer initializes the AudioInputManager with the required sample rate for the audio
+ output.
+ */
+ init(sampleRate: Int) {
+ self.sampleRate = sampleRate
+
+ // We are setting the buffer size to two times the Sample rate
+ bufferSize = self.sampleRate * 2
+ super.init()
+ }
+
+ func checkPermissionsAndStartTappingMicrophone() {
+ switch AVAudioSession.sharedInstance().recordPermission {
+
+ case .granted:
+ startTappingMicrophone()
+ case .denied:
+ delegate?.showCameraPermissionsDeniedAlert()
+ case .undetermined:
+ requestPermissions()
+ }
+ }
+
+ func requestPermissions() {
+ AVAudioSession.sharedInstance().requestRecordPermission { (granted) in
+ if granted {
+ self.startTappingMicrophone()
+ }
+ else {
+ self.checkPermissionsAndStartTappingMicrophone()
+ }
+ }
+ }
+
+ /** This method starts tapping the microphone input and converts it into the format for which the model is trained and periodically returns it in the block
+ */
+ func startTappingMicrophone() {
+ let inputNode = audioEngine.inputNode
+ let inputFormat = inputNode.outputFormat(forBus: 0)
+ let recordingFormat = AVAudioFormat(commonFormat: .pcmFormatInt16, sampleRate: Double(sampleRate), channels: 1, interleaved: true)
+ guard let formatConverter = AVAudioConverter(from:inputFormat, to: recordingFormat!) else {
+ return
+ }
+
+ // We install a tap on the audio engine and specifying the buffer size and the input format.
+ audioEngine.inputNode.installTap(onBus: 0, bufferSize: AVAudioFrameCount(bufferSize), format: inputFormat) { (buffer, time) in
+
+ self.conversionQueue.async {
+
+ // An AVAudioConverter is used to convert the microphone input to the format required for the model.(pcm 16)
+ let pcmBuffer = AVAudioPCMBuffer(pcmFormat: recordingFormat!, frameCapacity: AVAudioFrameCount(recordingFormat!.sampleRate * 2.0))
+ var error: NSError? = nil
+
+ let inputBlock: AVAudioConverterInputBlock = {inNumPackets, outStatus in
+ outStatus.pointee = AVAudioConverterInputStatus.haveData
+ return buffer
+ }
+
+ formatConverter.convert(to: pcmBuffer!, error: &error, withInputFrom: inputBlock)
+
+ if error != nil {
+ print(error!.localizedDescription)
+ }
+ else if let channelData = pcmBuffer!.int16ChannelData {
+
+ let channelDataValue = channelData.pointee
+ let channelDataValueArray = stride(from: 0,
+ to: Int(pcmBuffer!.frameLength),
+ by: buffer.stride).map{ channelDataValue[$0] }
+
+ // Converted pcm 16 values are delegated to the controller.
+ self.delegate?.didOutput(channelData: channelDataValueArray)
+ // completion(channelDataValueArray)
+ }
+
+ }
+ }
+
+ audioEngine.prepare()
+ do {
+ try audioEngine.start()
+ }
+ catch {
+ print(error.localizedDescription)
+ }
+ }
+
+}
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Cells/InfoCell.swift b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Cells/InfoCell.swift
new file mode 100755
index 0000000..5f42618
--- /dev/null
+++ b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Cells/InfoCell.swift
@@ -0,0 +1,20 @@
+// Copyright 2019 The TensorFlow Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import UIKit
+
+class InfoCell: UITableViewCell {
+ @IBOutlet weak var fieldNameLabel: UILabel!
+ @IBOutlet weak var infoLabel: UILabel!
+}
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Cells/WordCell.swift b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Cells/WordCell.swift
new file mode 100755
index 0000000..e5e34d1
--- /dev/null
+++ b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Cells/WordCell.swift
@@ -0,0 +1,30 @@
+// Copyright 2019 The TensorFlow Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import UIKit
+
+class WordCell: UICollectionViewCell {
+ @IBOutlet weak var nameLabel: UILabel!
+ @IBOutlet weak var backgroundImageView: UIImageView!
+
+ private let cornerRadius: CGFloat = 8.0
+ var borderColor: UIColor = UIColor.clear
+
+ override func draw(_ rect: CGRect) {
+ borderColor.setStroke()
+
+ let path = UIBezierPath(roundedRect: self.bounds.insetBy(dx: 1.0, dy: 1.0), cornerRadius: cornerRadius)
+ path.stroke()
+ }
+}
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Info.plist b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Info.plist
new file mode 100755
index 0000000..5a8cfc6
--- /dev/null
+++ b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Info.plist
@@ -0,0 +1,46 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleDisplayName
+ TFL Speech
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+ LSRequiresIPhoneOS
+
+ NSMicrophoneUsageDescription
+ This app will use the microphone to get audio input inorder to detect the commands spoken by user.
+ UILaunchStoryboardName
+ LaunchScreen
+ UIMainStoryboardFile
+ Main
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UIRequiresFullScreen
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+
+
+
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Model/.gitignore b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Model/.gitignore
new file mode 100755
index 0000000..8427540
--- /dev/null
+++ b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/Model/.gitignore
@@ -0,0 +1,2 @@
+*.txt
+*.tflite
\ No newline at end of file
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/ModelDataHandler/ModelDataHandler.swift b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/ModelDataHandler/ModelDataHandler.swift
new file mode 100755
index 0000000..8b85cfc
--- /dev/null
+++ b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/ModelDataHandler/ModelDataHandler.swift
@@ -0,0 +1,223 @@
+// Copyright 2019 The TensorFlow Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import TensorFlowLite
+import UIKit
+
+
+/// Information about a model file or labels file.
+typealias FileInfo = (name: String, extension: String)
+
+/// Information about the ConvActions model.
+enum ConvActions {
+ static let modelInfo: FileInfo = (name: "conv_actions_frozen", extension: "tflite")
+ static let labelsInfo: FileInfo = (name: "conv_actions_labels", extension: "txt")
+}
+
+/// This class handles all data preprocessing and makes calls to run inference on a given audio
+/// buffer by invoking the TensorFlow Lite `Interpreter`. It then formats the inferences obtained
+/// and averages the recognized commands by running them through RecognizeCommands.
+class ModelDataHandler {
+
+ // MARK: - Internal Properties
+
+ /// The current thread count used by the TensorFlow Lite Interpreter.
+ let threadCount: Int
+
+ let threadCountLimit = 10
+ let sampleRate = 16000
+
+ // MARK: - Private Properties
+
+ private var buffer:[Int] = []
+ private var recognizeCommands: RecognizeCommands?
+ private let audioBufferInputTensorIndex = 0
+ private let sampleRateInputTensorIndex = 1
+ private let labelOffset = 2
+ private let sampleDuration = 1000
+ private let minimumCount = 3
+ private let averageWindowDuration = 1000.0
+ private let suppressionMs = 1500.0
+ private let threshold: Float = 0.3
+ private let minTimeBetweenSamples = 30.0
+//https://bskyvision.com/entry/python-int8-float32-bool-numpy-%EC%9E%90%EB%A3%8C%ED%98%95-%EC%A0%95%EB%A6%AC
+ private let maxInt16AsFloat32: Float32 = 32767.0 // int16 = 2^16 개의 정수표현. -32768 ~ 32767 까지 표현
+
+ /// List of labels from the given labels file.
+ private var labels: [String] = []
+
+ /// TensorFlow Lite `Interpreter` object for performing inference on a given model.
+ private var interpreter: Interpreter
+
+ private var recordingLength: Int {
+ return (sampleRate * sampleDuration) / 1000
+ }
+
+ // MARK: - Initialization
+
+ /// A failable initializer for `ModelDataHandler`. A new instance is created if the model and
+ /// labels files are successfully loaded from the app's main bundle. Default `threadCount` is 1.
+ init?(modelFileInfo: FileInfo, labelsFileInfo: FileInfo, threadCount: Int = 1) {
+ let modelFilename = modelFileInfo.name
+
+ // Construct the path to the model file.
+ guard let modelPath = Bundle.main.path(
+ forResource: modelFilename,
+ ofType: modelFileInfo.extension
+ ) else {
+ print("Failed to load the model file with name: \(modelFilename).")
+ return nil
+ }
+
+ // Specify the options for the `Interpreter`.
+ self.threadCount = threadCount
+ var options = InterpreterOptions()
+ options.threadCount = threadCount
+ do {
+ // Create the `Interpreter`.
+ interpreter = try Interpreter(modelPath: modelPath, options: options)
+ // Allocate memory for the model's input `Tensor`s.
+ try interpreter.allocateTensors()
+ } catch let error {
+ print("Failed to create the interpreter with error: \(error.localizedDescription)")
+ return nil
+ }
+ loadLabels(fileInfo: labelsFileInfo)
+ recognizeCommands = RecognizeCommands(
+ averageWindowDuration: averageWindowDuration,
+ detectionThreshold: threshold,
+ minimumTimeBetweenSamples: minTimeBetweenSamples,
+ suppressionTime: suppressionMs,
+ minimumCount: minimumCount,
+ classLabels: labels
+ )
+ }
+
+ // MARK: - Internal Methods
+
+ /// Invokes the `Interpreter` and processes and returns the inference results.
+ func runModel(onBuffer buffer: [Int16]) -> RecognizedCommand? {
+ let outputTensor: Tensor
+ do {
+ // Copy the `[Int16]` buffer data as an array of `Float`s to the audio buffer input `Tensor`'s.
+ let audioBufferData = Data(copyingBufferOf: buffer.map { Float($0) / maxInt16AsFloat32 })
+ try interpreter.copy(audioBufferData, toInputAt: audioBufferInputTensorIndex)
+
+ // Copy the sample rate data to the sample rate input `Tensor`.
+ var rate = Int32(sampleRate)
+ let sampleRateData = Data(bytes: &rate, count: MemoryLayout.size(ofValue: rate))
+ try interpreter.copy(sampleRateData, toInputAt: sampleRateInputTensorIndex)
+
+ // Run inference by invoking the `Interpreter`.
+ try interpreter.invoke()
+
+ // Get the output `Tensor` to process the inference results.
+ outputTensor = try interpreter.output(at: 0)
+ } catch let error {
+ print("Failed to invoke the interpreter with error: \(error.localizedDescription)")
+ return nil
+ }
+
+ // Gets the formatted and averaged results.
+ let scores = [Float32](unsafeData: outputTensor.data) ?? []
+ let command = getResults(withScores: scores)
+
+ return command
+ }
+
+ /// Returns the labels other than silence and unknown for display.
+ func offsetLabelsForDisplay() -> [String] {
+ return Array(labels[labelOffset.. RecognizedCommand? {
+
+ let results: [Float] = Array(scores[0..= labelOffset
+ else {
+ return nil
+ }
+ return newCommand
+ }
+
+ /// Loads the labels from the labels file and stores them in the `labels` property.
+ private func loadLabels(fileInfo: FileInfo) {
+ let filename = fileInfo.name
+ let fileExtension = fileInfo.extension
+ guard let fileURL = Bundle.main.url(forResource: filename, withExtension: fileExtension) else {
+ fatalError("Labels file not found in bundle. Please add a labels file with name " +
+ "\(filename).\(fileExtension) and try again.")
+ }
+ do {
+ let contents = try String(contentsOf: fileURL, encoding: .utf8)
+ labels = contents.components(separatedBy: .newlines)
+ } catch {
+ fatalError("Labels file named \(filename).\(fileExtension) cannot be read. Please add a " +
+ "valid labels file and try again.")
+ }
+ }
+}
+
+// MARK: - Extensions
+
+extension Data {
+ /// Creates a new buffer by copying the buffer pointer of the given array.
+ ///
+ /// - Warning: The given array's element type `T` must be trivial in that it can be copied bit
+ /// for bit with no indirection or reference-counting operations; otherwise, reinterpreting
+ /// data from the resulting buffer has undefined behavior.
+ /// - Parameter array: An array with elements of type `T`.
+ init(copyingBufferOf array: [T]) {
+ self = array.withUnsafeBufferPointer(Data.init)
+ }
+}
+
+extension Array {
+ /// Creates a new array from the bytes of the given unsafe data.
+ ///
+ /// - Warning: The array's `Element` type must be trivial in that it can be copied bit for bit
+ /// with no indirection or reference-counting operations; otherwise, copying the raw bytes in
+ /// the `unsafeData`'s buffer to a new array returns an unsafe copy.
+ /// - Note: Returns `nil` if `unsafeData.count` is not a multiple of
+ /// `MemoryLayout.stride`.
+ /// - Parameter unsafeData: The data containing the bytes to turn into an array.
+ init?(unsafeData: Data) {
+ guard unsafeData.count % MemoryLayout.stride == 0 else { return nil }
+ #if swift(>=5.0)
+ self = unsafeData.withUnsafeBytes { .init($0.bindMemory(to: Element.self)) }
+ #else
+ self = unsafeData.withUnsafeBytes {
+ .init(UnsafeBufferPointer(
+ start: $0,
+ count: unsafeData.count / MemoryLayout.stride
+ ))
+ }
+ #endif // swift(>=5.0)
+ }
+}
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/ModelDataHandler/RecognizeCommands.swift b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/ModelDataHandler/RecognizeCommands.swift
new file mode 100755
index 0000000..4127abe
--- /dev/null
+++ b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/ModelDataHandler/RecognizeCommands.swift
@@ -0,0 +1,168 @@
+// Copyright 2019 The TensorFlow Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import Foundation
+
+struct RecognizedCommand {
+ var score: Float
+ var name: String
+ var isNew: Bool
+}
+
+/**
+ This class smoothes out the results by averaging them over a window duration and making sure the
+ commands are not duplicated for display.
+ */
+class RecognizeCommands {
+ // MARK: Structures that handles results.
+ private struct Command {
+ var score: Float
+ let name: String
+ }
+
+ private struct ResultsAtTime {
+ let time: TimeInterval
+ let scores: [Float]
+ }
+
+ // MARK: Constants
+ private let averageWindowDuration: Double
+ private let suppressionTime: Double
+ private let minimumCount: Int
+ private let minimumTimeBetweenSamples: Double
+ private let detectionThreshold: Float
+ private let classLabels: [String]
+ private let silenceLabel = "_silence_"
+ private var previousTopLabel = "_silence_"
+
+
+ private var previousTopScore: Float = 0.0
+ private var previousTopLabelTime: TimeInterval = Date.distantPast.timeIntervalSince1970 * 1000
+ private var previousResults: [ResultsAtTime] = []
+
+ /**
+ Initializes RecognizeCommands with specified parameters.
+ */
+ init(averageWindowDuration: Double, detectionThreshold: Float, minimumTimeBetweenSamples: Double, suppressionTime: Double, minimumCount: Int, classLabels: [String]) {
+ self.averageWindowDuration = averageWindowDuration
+ self.detectionThreshold = detectionThreshold
+ self.minimumTimeBetweenSamples = minimumTimeBetweenSamples
+ self.suppressionTime = suppressionTime
+ self.minimumCount = minimumCount
+ self.classLabels = classLabels
+ }
+
+ /**
+ This function averages the results obtained over an average window duration and prunes out any
+ old results.
+ */
+ func process(latestResults: [Float], currentTime: TimeInterval) -> RecognizedCommand? {
+
+ guard latestResults.count == classLabels.count else {
+ fatalError("There should be \(classLabels.count) in results. But there are \(latestResults.count) results")
+ }
+
+ // Checks if the new results were identified at a later time than the currently identified
+ // results.
+ if let first = previousResults.first, first.time > currentTime {
+ fatalError("Results should be provided in increasing time order")
+ }
+
+ if let lastResult = previousResults.last {
+
+ let timeSinceMostRecent = currentTime - lastResult.time
+
+ // If not enough time has passed after the last inference, we return the previously identified
+ // result as legitimate one.
+ if timeSinceMostRecent < minimumTimeBetweenSamples {
+ return RecognizedCommand(score: previousTopScore, name: previousTopLabel, isNew: false)
+ }
+ }
+
+ // Appends the new results to the identified results
+ let results: ResultsAtTime = ResultsAtTime(time: currentTime, scores: latestResults)
+
+ previousResults.append(results)
+
+ let timeLimit = currentTime - averageWindowDuration
+
+ // Flushes out all the results currently held that less than the average window duration since
+ // they are considered too old for averaging.
+ while previousResults[0].time < timeLimit {
+ previousResults.removeFirst()
+
+ guard previousResults.count > 0 else {
+ break
+ }
+ }
+
+ // If number of results currently held to average is less than a minimum count, return the score
+ // as zero so that no command is identified.
+ if previousResults.count < minimumCount {
+ return RecognizedCommand(score: 0.0, name: previousTopLabel, isNew: false)
+ }
+
+ // Creates an average of the scores of each classes currently held by this class.
+ var averageScores:[Command] = []
+ for i in 0...classLabels.count - 1 {
+
+ let command = Command(score: 0.0, name: classLabels[i])
+ averageScores.append(command)
+
+ }
+
+ for result in previousResults {
+
+ let scores = result.scores
+ for i in 0...scores.count - 1 {
+ averageScores[i].score = averageScores[i].score + scores[i] / Float(previousResults.count)
+
+ }
+ }
+
+ // Sorts scores in descending order of confidence.
+ averageScores.sort { (first, second) -> Bool in
+ return first.score > second.score
+ }
+
+ var timeSinceLastTop: Double = 0.0
+
+ // If silence was detected previously, consider the current result with the best average as a
+ // new command to be displayed.
+ if (previousTopLabel == silenceLabel ||
+ previousTopLabelTime == (Date.distantPast.timeIntervalSince1970 * 1000)) {
+
+ timeSinceLastTop = Date.distantFuture.timeIntervalSince1970 * 1000
+ }
+ else {
+ timeSinceLastTop = currentTime - previousTopLabelTime
+ }
+
+ // Return the results
+ var isNew = false
+ if (averageScores[0].score > detectionThreshold && timeSinceLastTop > suppressionTime) {
+
+ previousTopScore = averageScores[0].score
+ previousTopLabel = averageScores[0].name
+ previousTopLabelTime = currentTime
+ isNew = true
+ }
+ else {
+ isNew = false
+ }
+
+ return RecognizedCommand(
+ score: previousTopScore, name: previousTopLabel, isNew: isNew)
+ }
+}
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/StoryBoards/Base.lproj/LaunchScreen.storyboard b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/StoryBoards/Base.lproj/LaunchScreen.storyboard
new file mode 100755
index 0000000..f83f6fd
--- /dev/null
+++ b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/StoryBoards/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/StoryBoards/Base.lproj/Main.storyboard b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/StoryBoards/Base.lproj/Main.storyboard
new file mode 100755
index 0000000..55e5c57
--- /dev/null
+++ b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/StoryBoards/Base.lproj/Main.storyboard
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/ViewControllers/ViewController.swift b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/ViewControllers/ViewController.swift
new file mode 100755
index 0000000..b79b4dc
--- /dev/null
+++ b/TFLite/SpeechRecognition/ios_speech_commands/SpeechCommands/ViewControllers/ViewController.swift
@@ -0,0 +1,218 @@
+// Copyright 2019 The TensorFlow Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import UIKit
+
+class ViewController: UIViewController {
+
+ // MARK: Storyboard Outlets
+ @IBOutlet weak var collectionView: UICollectionView!
+
+ // MARK: Constants
+ private let unselectedFontColor = UIColor(
+ displayP3Red: 124.0/255.0, green: 136.0/255.0, blue: 144.0/255.0, alpha: 1.0)
+ private let selectedFontColor = UIColor(
+ displayP3Red: 250.0/255.0, green: 141.0/255.0, blue: 0.0/255.0, alpha: 1.0)
+ private let unselectedBorderColor = UIColor(
+ displayP3Red: 199.0/255.0, green: 208.0/255.0, blue: 216.0/255.0, alpha: 1.0)
+ private let collectionViewPadding: CGFloat = 15.0
+ private let highlightTime: Double = 0.5
+ private let imageInset: CGFloat = 8.0
+
+ // MARK: Objects Handling Core Functionality
+ private var modelDataHandler: ModelDataHandler? =
+ ModelDataHandler(modelFileInfo: ConvActions.modelInfo, labelsFileInfo: ConvActions.labelsInfo)
+ private var audioInputManager: AudioInputManager?
+
+ // MARK: Instance Variables
+ private var words: [String] = []
+ private var highlightedCommand: RecognizedCommand?
+ private var bufferSize: Int = 0
+
+ // MARK: View Handling Methods
+ override func viewDidLoad() {
+ super.viewDidLoad()
+
+ guard let handler = modelDataHandler else {
+ return
+ }
+
+ // Displays lables
+ words = handler.offsetLabelsForDisplay()
+ self.collectionView.reloadData()
+
+ startAudioRecognition()
+
+ }
+
+ override var preferredStatusBarStyle : UIStatusBarStyle {
+ return .lightContent
+ }
+
+ /**
+ Initializes the AudioInputManager and starts recognizing on the output buffers.
+ */
+ private func startAudioRecognition() {
+
+ guard let handler = modelDataHandler else {
+ return
+ }
+
+ audioInputManager = AudioInputManager(sampleRate: handler.sampleRate)
+ audioInputManager?.delegate = self
+
+ guard let workingAudioInputManager = audioInputManager else {
+ return
+ }
+
+ bufferSize = workingAudioInputManager.bufferSize
+
+ workingAudioInputManager.checkPermissionsAndStartTappingMicrophone()
+
+ }
+
+ /**
+ This method runs hands off inference to the ModelDataHandler by passing the audio buffer.
+ */
+ private func runModel(onBuffer buffer: [Int16]) {
+
+ // Updates the results on the screen.
+ guard let recognizedCommand = self.modelDataHandler?.runModel(onBuffer: buffer) else {
+ return
+ }
+ DispatchQueue.main.async {
+ self.highlightedCommand = recognizedCommand
+ self.highlightResult()
+ }
+ }
+
+ /**
+ Highlights the recognized command in the UICollectionView for the specified time.
+ */
+ private func highlightResult() {
+
+ DispatchQueue.main.async {
+
+ self.collectionView.reloadData()
+ self.perform(#selector(ViewController.unhighlightResult), with: nil, afterDelay: self.highlightTime)
+ }
+ }
+
+ /**
+ Unhighlights the recognized command in the UICollectionView.
+ */
+ @objc func unhighlightResult() {
+ highlightedCommand = nil
+
+ collectionView.reloadData()
+ }
+
+
+}
+
+// MARK: UICollectionView DataSource and Delegate
+extension ViewController: UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
+
+ // Get item size of the collection view with respect to it's current width and height.
+ private func itemSize() -> CGSize {
+ let width = (self.collectionView.bounds.size.width - collectionViewPadding) / 2.0
+ let rows: CGFloat = CGFloat(words.count / 2)
+ let height = (self.collectionView.bounds.size.height - ((CGFloat(rows - 1) * collectionViewPadding))) / rows
+
+ return CGSize(width: width, height: height)
+ }
+
+ func numberOfSections(in collectionView: UICollectionView) -> Int {
+ return 1
+ }
+
+ func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
+ return words.count
+ }
+
+ func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
+
+ var borderColor = UIColor.clear
+ let wordCell = cell as? WordCell
+
+ let word = words[indexPath.item]
+
+ if let recognizedCommand = highlightedCommand, recognizedCommand.name == word {
+ borderColor = UIColor.clear
+ }
+ else {
+ borderColor = unselectedBorderColor
+ }
+
+ wordCell?.borderColor = borderColor
+ wordCell?.setNeedsDisplay()
+ }
+
+ func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
+
+ return itemSize()
+ }
+
+ func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
+
+ let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "WORD_CELL", for: indexPath) as! WordCell
+
+ let word = words[indexPath.item]
+
+ var backgroundImage: UIImage?
+ var fontColor = unselectedFontColor
+ var name = word.capitalized
+
+ if let recognizedCommand = highlightedCommand, recognizedCommand.name == word {
+ backgroundImage = UIImage(named: "base")?.resizableImage(withCapInsets: UIEdgeInsets(top: imageInset, left: imageInset, bottom: imageInset, right: imageInset), resizingMode: .stretch)
+ fontColor = selectedFontColor
+ name = word.capitalized + " (\(Int(recognizedCommand.score * 100.0))%)"
+ }
+
+ cell.backgroundImageView.image = backgroundImage
+ cell.nameLabel.textColor = fontColor
+ cell.nameLabel.text = name
+
+ return cell
+ }
+
+}
+
+extension ViewController: AudioInputManagerDelegate {
+
+ func didOutput(channelData: [Int16]) {
+
+ guard let handler = modelDataHandler else {
+ return
+ }
+
+ self.runModel(onBuffer: Array(channelData[0..
+
+## Reference
+- Python으로 역전파 구현 : [Python으로 역전파 구현](../../Python/01_Backpropagation_Theory/README.md)
\ No newline at end of file
diff --git a/Theory/05_CNN/CNN_Structure.png b/Theory/05_CNN/CNN_Structure.png
new file mode 100644
index 0000000..e69af19
Binary files /dev/null and b/Theory/05_CNN/CNN_Structure.png differ
diff --git a/Theory/05_CNN/Convolution_FilterMap.png b/Theory/05_CNN/Convolution_FilterMap.png
new file mode 100644
index 0000000..5120d40
Binary files /dev/null and b/Theory/05_CNN/Convolution_FilterMap.png differ
diff --git a/Theory/05_CNN/Convolution_mathexp.png b/Theory/05_CNN/Convolution_mathexp.png
new file mode 100644
index 0000000..3e7cada
Binary files /dev/null and b/Theory/05_CNN/Convolution_mathexp.png differ
diff --git a/Theory/05_CNN/README.md b/Theory/05_CNN/README.md
new file mode 100644
index 0000000..15f7d52
--- /dev/null
+++ b/Theory/05_CNN/README.md
@@ -0,0 +1,88 @@
+# CNN
+합성곱 신경망의 특징은 **국소 감수 영역(local receptive field)** 및 **가중치 공유** 라 불리는 특별한 층간 결합을 가짐
+
+## 단순 세포와 복잡 세포
+- 합성곱 신경망은 인접한 층과 층 사이에 특정한 유닛만이 결합을 갖는 특별한 층
+- 층 에서는 합성곱과 폴링이라는 이미지 처리의 기본 연산이 일어남
+
+## 전체적인 구조
+- 입력 쪽에서 출력 쪽을 향해 **합성곱층** 과 **폴링층** 이, 합성곱층이 먼저 나오고 뒤이어 폴링층이 나오는 형태로 쌍을 이루며 이 쌍이 다시 여러 번 반복됨
+- 합성곱층만으로 여러 층이 반복된 후, 그 뒤에 폴링층이 한층 붙는 경우 존재
+- 합성곱층과 폴링층 뒤에 **국소 콘트라스트 정규화(Local Contrast Normalization, LCN)** 층을 배치
+- 합성곱층과 폴링층이 반복되는 구조 뒤에는 인접한 층 사이의 유닛이 전결합한 층이 배치
+
+
+
+
+## 합성곱
+- 그레이 스케일 이미지를 예로 이미지 사이즈를 (W x W), 픽셀 인덱스를 (i, j)로 나타낸다 했을 때 픽셀 값을 x(i,j)
+- 필터(filter)라는 작은 크기의 이미지를 상정하고 크기를 (H x H), 필터의 픽셀은 인덱스 (p, q)로 나타내고 픽셀 값은 h(p,q)
+- 이미지의 합성곱이란 이미지와 필터 사이 아래와 같은 연산
+
+
+
+
+### 합성곱의 작용
+이미지의 합성곱(또는 상관)은 필터의 명암 패턴과 유사한 명암 패턴이 입력된 이미지 어디에 있는지를 검출하는 작용을 함
+
+### 패딩
+- 합성곱은 이미지에 필터를 겹쳤을 때 이미지와 필터가 겹쳐지는 픽셀끼리 곱을 구하여 필터 전체에 그 값을 합하는 연산
+ - 이미지로부터 필터가 벗어나는 위치에 적용하는 것은 불가능
+- 합성곱 계산의 결과 이미지 크기는 입력 이미지의 크기보다 작아지게 됨
+ - (W - 2[H/2]) x (W - 2[H/2])
+ - [.] : 소수점은 버림
+ - ex] 8x8 입력이미지, 3x3 필터 : 8-2[3/2] = 6
+- 합성곱한 결과 이미지가 입력 이미지와 크기가 같으면 좋음
+ - 입력 이미지의 바깥쪽 테두리를 만들어 크기를 늘려서 출력 이미지의 크기가 원래 입력 이미지와 같은 크기가 되도록 함
+ - 이 태두리 부분은 픽셀값을 0으로 설정하는 방법으로 제로 패딩(zero-padding)이라 부르는 방법을 사용
+ - CNN에서 제로 패딩이 널리 쓰이나 이미지 처리라는 관점에서 보면 좋지 않음
+ - 제로 패딩 처리로 인해 출력 이미지의 주변부가 어둡게 되기 때문
+ - 테두리 부분의 픽셀값을 0이 아닌 더 그럴듯한 값으로 채우는 기법이 존재
+
+### 스트라이드
+- 필터가 적용되는 위치를 1픽셀이 아닌 여러 픽셀씩 움직이며 계산할 수도 있음
+- 이 필터의 적용 위치 간격을 **스트라이드(stride)** 라 함
+- 출력 이미지의 크기
+ - ([(W-1/s)] + 1) x ([(W-1/s)] + 1)
+- 크기가 큰 입력 이미지를 다룰 때 합성곱층의 출력쪽 유닛 수가 너무 많아지는 것을 막기 위해 2 이상의 스트라이드 값을 적용하는 경우가 존재
+ - But, 스트라이드 값을 크게 잡는 것은 이미지의 특징을 놓칠 가능성을 의미 일반적으로 성능이 좋아지지 않음
+
+## 합성곱층
+- 합성곱 연산을 하는 단층 신경망
+- 채널 수가 K인 이미지의 각 픽셀은 K개의 값을 가짐
+ - RGB 3가지 색으로 구성된 이미지의 채널 수는 3
+- CNN은 이런 이미지를 입력으로 받지만 대개 중간층(합성곱층과 폴링층)에서 그 이상의 채널 수(K=16, 256 등)을 다룸
+- 이러한 중간층의 출력을 이미지라 부르지 않고 **맵(map)** 이라 부르기도 함
+
+
+
+
+- 각 필터는 입력 이미지와 같은 채널 수 K를 가짐
+- m = 0, 1, 2의 각 필터 m에 대하여 병렬로 계산이 실행 각각 한 개 채널이 출력
+- 입력 이미지의 채널 수와 상관없이 하나의 필터로부터 나오는 출력은 항상 1채널이 됨
+- 합성곱층의 최종 출력은 필터 수 M과 같은 수의 채널 수를 갖는 다 채널 이미지가 됨
+ - 입력의 크기가 W x W x K 일 때 (합성곱층의 필터수는 M) 출력의 크기는 W x W x M이 됨
+- 가중치는 출력층의 같은 채널에 속하는 모든 유닛에서 같음(**가중치 공유**)
+- 합성곱층의 가중치는 필터 그 자체이므로 최적화의 대상이 필터가 됨, 역전파법에 의해 합성곱층의 델타와 필터의 오차 기울기가 계산
+
+## 폴링층
+- 폴링층은 보통 합성곱층의 바로 뒤에 배치
+- W x W x K인 입력 이미지의 픽셀을 중심으로 H x H 크기의 정사각형 영역을 잡아 채널 k마다 독립적으로 H^2개 있는 픽셀값을 사용하여 하나의 픽셀값을 구함. 이 값을 구하는 방법으로 아래의 2가지 방법이 있음
+ - 최대폴링
+ - 평균폴링
+- 폴링의 계산은 입력 이미지의 각 채널마다 병렬로 실행됨 보통 폴링층의 출력 채널 수는 입력 이미지의 채널 수와 일치
+- 합성곱층과 마찬가지로 폴링층에도 2 이상의 스트라이드를 설정할 수 있음
+- 폴링층의 유닛에 활성화 함수를 적용하는 것은 가능은 하나 보통은 적용하지 않음
+- 폴링층에는 학습에 따라 변화할 수 있는 파라미터가 존재하지 않음
+
+## 정규화층
+### 국소 콘트라스트 정규화
+- 자연물 이미지를 입력으로 하는 이미지 인식 문제에서 입력 이미지의 전체적인 밝기나 대비의 차이를 잘 흡수해야 함
+- 주변의 조명에 따라 이미지 전체의 밝기나 대비가 크게 변하게됨
+- 이러한 변화에도 불구하고 이미지를 잘 인식하기 위해 이미지의 명암을 보종의 방법으로 정규화하는 방법이 필요
+- 정규화 방법
+ - 이미지의 집합(훈련 데이터)에 대한 통계치를 이용하는 처리
+ - 국소 콘트라스트 정규화(local contrast normalization)
+ - 감산 정규화(subtractive normalization)
+ - 제산 정규화(divisive normalization)
+- 국소 콘트라스트 정규화 또한 가중치는 고정값이어서 폴링층과 마찬가지로 학습이 가능한 파라미터는 존재하지 않음
\ No newline at end of file
diff --git a/Theory/06_RNN/README.md b/Theory/06_RNN/README.md
new file mode 100644
index 0000000..9e5851c
--- /dev/null
+++ b/Theory/06_RNN/README.md
@@ -0,0 +1,63 @@
+# RNN
+재귀 신경망(RNN)은 음성이나 언어, 동영상과 같은 연속열 데이터를 다루는 신경망
+
+- 데이터는 일반적으로 그 길이가 샘플마다 무척 다르며 연속열 내의 요소의 순서(문맥)에 의미가 있는 것이 특징
+
+## 연속열 데이터의 분류
+- 연속열 데이터란 각각의 요소에 순서가 있는 모임으로 음성, 동영상, 텍스트 등이 있음
+
+## RNN의 구조
+- 재귀 신경망(RNN)은 내부에 (방향이 있는) 순환경로를 가진 신경망을 통틀어 부르는 말로 그러한 구조 덕에 정보를 일시적으로 기억하고 그에 따라 반응을 동적으로 변화 가능
+- 그로 인해 연속열 데이터 안에 존재하는 '문맥'을 포착하고 분류 문제도 잘 처리 가능
+- RNN의 동작은 각각의 시각 t마다 하나의 입력 X^t를 입력받아 또 동시에 하나의 출력 y^t를 출력하는 것
+- 신경망 내부에 있는 귀환로에 의해 출력을 계산할 때 RNN이 이전에 입력받은 모든 입력(입력의 히스토리)이 관여
+- RNN은 이론상 과거의 모든 입력에 대해 하나의 출력을 내놓는 매핑을 모형화
+
+
+
+
+- 연속열 데이터 전체가 일괄로 주어진 경우 그 연속열 데이터를 역순으로 RNN에 입력하는 것도 가능
+- 원래 순서대로 연속열을 입력받는 RNN과 역순으로 연속열을 입력받는 RNN을 만들어 양쪽의 출력층을 통합해 구성한 신경망을 **양방향 RNN(bidirectional RNN)** 이라 함
+ - 양방향 RNN이 정방향 입력만 주어지는 RNN보다 성능이 더 좋다고 알려짐
+
+## 순전파 계산
+- RNN의 귀환로는 중간층의 출력을 스스로의 입력으로 되돌리는 것으로 이 사이의 모든 유닛 간에 결합이 존재
+- 이 귀환로로 들어오는 입력이 한 시각 전의 신호로 시각 t에 대한 중간층 각 유닛의 입력은 같은 시각에 입력층으로부터 전해지는 것과 시각 t - 1 에 중간층에서 나온 출력이 피드백된 것의 합
+
+## 역전파 계산
+- RNN을 학습하는 데는 앞먹임 신경망과 같이 SGD를 사용, 어떤 경우든 각 층의 가중치에 대한 오차의 미분을 계산
+ - **RTRL(RealTime Recurrent Learning)**
+ - 메모리 효율이 좋음
+ - **BPTT(BackPropagation Through Time)**
+ - 계산속도가 빠르며 간단
+
+- BPTT는 RNN을 시간 방향으로 펼쳐 앞먹임 신경망과 같은 형태로 만든 후 역전파 계산을 수행
+ - 시간 방향으로 펼친다는 것은 매 시각마다의 RNN의 각 층이 별개인 것처럼 간주
+
+
+
+
+## 장단기기억
+### RNN의 기울기 소실 문제
+- RNN의 경우 포착할 수 있는 문맥의 길이, 즉 현재 시각으로부터 얼마나 먼 과거의 입력까지 반영할 수 있는지가 중요
+ - 이론상으론 과거의 모든 입력 이력이 고려되어야 할테지만 실제 RNN의 출력에 반영시킬 수 있는 것은 기껏해야 과거 10시각 정도로 알려져 있음
+- 이러한 한계는 앞먹임 신경망의 기울기 소실 문제와 같은 원인에서 비롯
+- 층수가 많은 신경망에는 역전파법으로 기울기를 계산시 층을 거슬러 올라감에 따라 기울기 값이 폭발적으로 커지거나 0으로 소멸해 버리기 쉬운 성질 존재
+ - RNN의 역전파 계산은 시간 방향으로 전개되므로 층수가 매우 많은 앞먹임 신경망의 역전파 계산으로 바꿔 생각할 수 있음 ==> RNN의 본래 층수가 적다 해도 역전파 계산 시에는 많은 층수를 다루는 것과 마찬가지 그에 따라 기울기 값도 발산하거나 소멸하거나 둘 중 하나가 되기 쉬움
+- RNN으로는 단기적 기억은 실현할 수 있지만 더 장기적 기억을 실현하는 것은 어려움
+
+## LSTM의 개요
+RNN으론 장기적 기억 실현이 어려워 장기적 기억을 실현하기 위해 제안된 방법 중 가장 성공적 시도가 장단기기억(Long Short-Term Memory)
+- LSTM은 RNN에 비해 중간층의 각 유닛이 메모리 유닛이라 불리는 요소로 구성된 구조로 그 외의 구조는 기존 RNN과 같음
+
+## 입력과 출력의 연속열 길이가 다른 경우
+### 은닉 마르코프 모델
+- RNN(LSTM 포함)은 각 시각 t마다 하나의 입력 x^t를 받아 하나의 출력 y^t를 내놓음
+ - 이 동작은 입력 연속열과 다른 길이를 가진 연속열을 추정해야 하는 경우엔 적합하지 않음
+- **은닉 마르코프 모델(Hidden Markov Model, HMM)** 은 이러한 문제를 다루는 가장 일반적 방법
+- HMM은 내부 상태를 숨겨진 변수로 가지고 이 변수가 시각과 함께 확률적으로 변화 동시에 HMM은 현재의 내부 상태에 기ㅗ한 확률적 관측을 생성
+
+## 커넥셔니스트 시계열 분류(CTC)
+- Connectionist Temporal Classification
+- 입력과 출력 사이에 연속열의 길이가 서로 다른 경우의 분류 문제를 HMM을 쓰지 않고 신경망만을 사용해 해결하려는 방법
+- CTC는 RNN의 출력에 대한 해석을 바꾸어 입력 연속열과 길이가 다른 출력 연속열을 다룰 수 있도록 해줌
\ No newline at end of file
diff --git a/Theory/06_RNN/RNNBasic.png b/Theory/06_RNN/RNNBasic.png
new file mode 100644
index 0000000..f7a421a
Binary files /dev/null and b/Theory/06_RNN/RNNBasic.png differ
diff --git a/Theory/06_RNN/RNN_Backpropagation.png b/Theory/06_RNN/RNN_Backpropagation.png
new file mode 100644
index 0000000..11a4856
Binary files /dev/null and b/Theory/06_RNN/RNN_Backpropagation.png differ
diff --git a/Transformer/01_TextClassification/README.md b/Transformer/01_TextClassification/README.md
new file mode 100644
index 0000000..c95579c
--- /dev/null
+++ b/Transformer/01_TextClassification/README.md
@@ -0,0 +1,213 @@
+# Text Classification using DistilBERT
+Huggingface의 DistilBERT(BERT와 비교해 성능은 비슷하지만 훨씬 작고 효율적) 모델을 사용해 6개의 감정 모델을 분류
+Huggingface 생태계의 핵심 라이브러리 사용
+- **데이터셋(Dataset)**
+- **토크나이저(Tokenizer)**
+- **트랜스포머스(Transformers)**
+
+## 1. 데이터셋
+### 허깅페이스 데이터셋 사용
+- **list_datasets()** 함수를 사용하면 허브에서 제공하는 데이터셋 목록이 출력됨
+- **load_dataset()** 함수로 데이터셋 로드
+
+### Huggingface hub에 데이터셋이 없는 경우
+- 데이터셋은 로컬 데이터셋이나 원격 데이터셋에 사용 가능한 로딩 스크립트를 제공해줌
+- 포멧에 따른 데이터셋 로딩 방법
+ - CSV: load_dataset("csv", data_files="my_file.csv")
+ - text: load_dataset("text", data_files="my_file.txt")
+ - JSON: load_dataset("json", data_files="my_file.jsonl")
+- 원격 데이터 로딩 방법
+```
+dataset_url = "https://www.~/train.txt"
+!wget {dataset_url}
+emotions_local = load_dataset("csv", data_files="train.txt", sep=";", names=["text", "label"])
+```
+구분자(sep)와 열 이름(names)을 지정
+```
+dataset_url = "https://www.~/train.txt"
+emotions_local = load_dataset("csv", data_files=dataset_url, sep=";", names=["text", "label"])
+```
+
+### 데이터셋 to 데이터프레임
+- Dataset 객체를 판다스 DataFrame으로 변환하게 되면 고수준 데이터 시각화 API 등 편리한 API를 사용할 수 있음
+- 데이터셋은 Dataset의 출력 포맷을 변경하는 **set_format()** 메서드를 제공
+
+### 클래스 분포 확인
+- 텍스트 분류 문제를 다룰땐 샘플의 클래스 분포 조사를 해야 함
+- 클래스 분포가 편향된 데이터 셋은 훈련 손실과 평가 지표 측면에서 균형 잡힌 데이터셋과 다른 처리법이 필요
+- pandas와 matplot을 이용하면 클래스 분포를 시각화할 수 있음
+
+- 데이터셋이 불균형 한 경우 처리방법
+ - 소수 클래스를 랜덤하게 오버샘플링(oversampling)
+ - 다수 클래스를 랜덤하게 언더샘플링(undersampling)
+ - 클래스의 대표성이 부족하다면 레이블된 데이터를 더 많이 수집
+
+- 훈련/테스트 분할을 만들기 전에는 샘플링 전략을 사용하면 안됨 그렇지 않으면 분할 사이에 많은 정보가 새어나감
+ - 일반적으로 훈련 세트에만 샘플링 전략을 사용
+- 불균형한 클래스 분포에서의 샘플링 기법: https://imbalanced-learn.org/stable/
+
+### 길이 확인
+- 트랜스포머 모델은 **최대 문맥 크기(maximum context size)** 라는 최대 입력 시퀀스 길이가 존재
+ - DistilBERT를 사용하는 애플리케이션에서 최대 문맥 크기는 512 토큰
+
+## 2. 토큰나이저
+- 토큰화란 문자열을 모델이 사용하는 기본 단위로 분할하는 단계
+
+### 문자 토큰화
+- 가장 간단한 토큰화 방법으로 각 문자를 개별로 모델에 주입하는 것
+- 텍스트를 숫치 데이터로 변환한 후 one-hot vector의 2D 텐서로 변경
+- one-hot vector는 machine learning에서 순서형(ordinal) 또는 명목형(nominal) 범주 데이터를 인코딩 하기 위해 자주 사용
+ - 텍스트를 단순히 숫자로만 변경할시 이름 사이에 가상의 순서 또는 상관없는 관계가 생길수 있음
+- 문자 토큰화는 철자 오류, 희귀단어 처리 등 장점이 있지만 단어 같은 언어 구조를 이 데이터에서 학습해야 한다는 큰 단점이 존재
+ - 문자 수준의 토큰화는 거의 사용되지 않음
+
+### 단어 토큰화
+- 텍스트를 문자가 아닌 단어로 분할, 단어를 정수로 매핑
+- 처음부터 단어를 사용하면 모델이 문자에서 단어를 학습하는 단계가 생략되어 훈련 과정의 복잡도가 감소함
+- 단어 토큰화는 단어에 곡용, 활용형, 철자 오류가 포함되어 어휘사전이 금세 수백만 개까지 늘어나는 단점이 존재
+ - 어휘 사전이 크면 신경망의 파라미터 역시 많이 필요해짐
+ - 어휘사전의 크기를 제한하는 일반적 방법은 드물게 등장하는 단어는 무시
+ - ex)말뭉치에서 자주 등장하는 10만개 단어만 사용
+ - but, 그렇게 되면 단어 토큰화 과정에서 중요 정보를 일부 잃게 됨
+
+### 부분단어 토큰화
+- 부분단어 토큰화는 문자 토큰화와 단어 토큰화의 장점을 결합
+- 드물게 등장하는 단어를 더 작은 단위로 나누면 모델이 복잡한 단어나 철자 오류를 처리하기 용이
+- 입력 길이를 적절한 크기로 유지하기 위해 자주 등장하는 단어를 고유 항목으로 유지
+- NLP 에서 많이 사용되는 부분단어 토큰화는 BERT와 DistilBERT의 토큰나이저인 **WordPiece**
+- 트랜스포머스는 사전 훈련된 모델에 연관된 토크나이저를 빠르게 로드하는 **AutoTokenizer** 클래스 제공
+ - 이 클래스의 **from_pretrained()** 메서드를 허브의 모델ID나 로컬 파일 경로와 함께 호출
+- AutoTokenizer 클래스는 체크포인트 이름을 사용해 모델의 설정, 사전 훈련 가중치, 어휘 사전을 자동으로 추출하는 자동 클래스
+
+## 3. 텍스트 분류 모델 훈련
+- DistilBERT 모델은 텍스트 시퀀스에 있는 마스킹된 단어를 예측하도록 사전 훈련, 이 모델을 바로 텍스트 분류에 사용하지는 못함
+
+
+
+
+ - 토큰 인코딩(Token Encoding)
+ - 텍스트를 토큰화 하여 Token-Encoding이라 부르는 one-hot 벡터로 나타냄
+ - Tokenizer 어휘 사전의 크기(2만 ~ 2백만)가 토큰 인코딩의 차원을 결정
+ - 토큰 임베딩(Token Embedding)
+ - 토큰 인코딩을 저차원 공간의 벡터인 토큰 임베딩으로 변환
+ - 토큰 임베딩을 Encoder 블록 층에 통과시켜 각 입력 토큰에 대한 은닉 상태를 생성
+ - 각 은닉 상태는 언어 모델링의 사전 훈련 목표(DistilBERT의 경우 마스킹된 토큰)을 달성하기 위해 마스킹된 입력 토큰을 예측하는 층으로 보냄
+
+- 텍스트 분류 모델 훈련 방법
+ - 특성 추출
+ - 사전 훈련된 모델을 수정하지 않고 은닉 상태를 특성(feature)으로 사용해 분류 모델을 훈련
+ - 미세 튜닝
+ - 사전 훈련된 모델의 파라미터도 업데이트하기 위해 전체 모델을 엔드-투-엔드로 훈련
+
+### 트랜스포머를 특성 추출기로 사용
+- 바디의 가중치를 동결하고 은닉 상태를 분류 모델의 특성으로 사용
+- 이 방식은 작거나 얕은 모델을 빠르게 훈련한다는 장점이 존재
+
+### 사전 훈련된 모델 사용
+- 트랜스포머스의 자동 클래스인 **AutoModel**을 사용
+- AutoModel 클래스 또한 사전 훈련된 모델의 가중치를 로드하는 **from_pretrained()** 메서드 존재
+- AutoModel은 토큰 인코딩을 임베딩으로 변환한 다음 인코더 스택에 통과시켜 은닉 상태를 반환
+- 은닉 상태 텐서의 크기는 [batch_size, n_tokens, hidden_dim]
+ - ex) [1, 6, 768]: 6개의 입력 토큰마다 768차원의 벡터가 반환
+- 분류 작업에선 보통 [CLS] 토큰에 연관된 은닉 상태를 입력 특성으로 사용
+ - BERT모델에 있는 [CLS]토큰은 분류 작업에서 전체 시퀀스의 정보가 담긴 특수 토큰
+
+### 훈련 세트 시각화
+- UMAP 알고리즘을 사용해 벡터를 2D로 투영
+ - UMAP은 특성이 [0,1] 범위에 놓일 때 잘 동작함
+ - Scikit-learn의 MinMaxScaler를 적용
+
+## 트랜스포머 미세 튜닝
+- 미세튜닝방식에서는 은닉 상태를 고정된 특성으로 사용하지 않고 전체 모델을 훈련
+- 그렇기에 분류 헤드는 미분 가능해야 함(미분이 가능해야 역전파법으로 weight를 구할 수 있기 때문)
+- 트랜스포머스의 **Trainer** API를 사용
+- AutoModel 클래스 대신 AutoModelForSequenceClassification을 사용
+ - 사전 훈련된 모델 출력위에 베이스 모델과 함께 쉽게 훈련할 수 있는 분류헤드가 존재
+- 훈련 파라미터를 정의하기 위해 **TrainingArguments** 클래스를 사용
+ - 많은 정보를 저장하며 훈련과 평가를 상세히 제어 가능
+ - TrainingArguments Parameter
+ - output_dir: Output Directory, 모델의 예측과 체크포인트를 저장해두는 장소
+ - num_train_epochs: epochs 횟수
+ - learning_rate: 학습률
+ per_device_train_batch_size/ per_device_eval_batch_size: 배치크기
+ - weight_decay: 가중치 감쇠 정도
+ - evaluation_strategy: Training중 채택할 평가 전략
+ - "no" : 학습하는 동안 평가 하지 않음
+ - "steps" : eval_steps 마다 평가
+ - "epoch" : epoch 당 평가
+ - logging_steps: 업데이트 단계 수
+ - save_strategy: 체크 포인트 저장 전략
+ - "no": 저장하지 않음
+ - "epoch": epoch 마다 저장
+ - "steps": save_step마다 저장
+ - load_best_model_at_end: 학습이 끝났을때 가장 best model을 load
+ - 참고: https://huggingface.co/docs/transformers/v4.24.0/en/main_classes/trainer#transformers.TrainingArguments
+
+## 오류 분석
+- 모델의 손실 기준으로 검증 샘플을 정렬
+- 정방향 패스의 결과와 레이블을 사용하면 손실을 자동 계산 가능
+
+## CODE
+colab을 사용해 실행
+- colab/MotionClassifier.ipynb
+
+## Reference
+1. 아파치 애로우(Apache Arrow)
+ - 서로 다른 데이터 인프라가 서로 간의 데이터 공유를 위해 API를 이용할때 발생하는 문제점 중 하나는 직렬화와 역직렬화의 오버헤드가 너무 높다는 것
+ - Arrow는 언어, 플랫폼과 상관없이 메모리 상에서 컬럼 구조로 데이터를 정의하여 CPU, GPU에서 메모리를 빠르게 읽고 쓸 수 있도록 해줌
+
+
+
+2. 박스 플롯(Box Plot)
+ - 많은 데이터를 눈으로 확인하기 어려울 때 그림을 이용해 데이터 집합의 범위와 중앙값을 빠르게 확인하는 목적으로 사용
+
+
+
+3. WordPiece
+ - https://wikidocs.net/166826
+
+4. Embedding Layer
+ - 문자 입력에 대해 학습을 요할 때 필요 Layer
+ - 단어를 의미론적 기하공간에 매핑할 수 있도록 벡터화 시킴
+
+5. UMAP
+ - 차원 축소 기술로 머신러닝 개발자들이 고차원 데이터셋을 이해하고 시각화하기 위해 사용하는 툴
+ - umap 동작 원리: https://m.blog.naver.com/myohyun/222421460444
+ - umap github: https://github.com/lmcinnes/umap
+ - UMAP 생성자 파라미터
+
+
+
+
+6. 오차행렬(confused matrix)
+ - 학습된 분류 모델이 예측을 수행하며 얼마나 햇갈리고(confused) 있는지도 함께 보여주는 지표
+
+
+
+
+ - True: 예측 클래스 값과 실제 클래스 값이 같음을 의미
+ - False: 예측 클래스 값과 실제 클래스 값이 다름을 의미
+ - Accuracy = (TN + TP) / (TN + FP + FN + TP)
+ - 다중 클래스의 경우 자기 클래스는 Positive, 나머지는 모두 Negative로 처리
+
+7. f1 점수
+ - Precision(정밀도)
+ - 모델이 True라고 분류한 것 중에 실제 True인 것의 비율
+ - Precision = (TP) / (TP + FP)
+ - Recall(재현율)
+ - 실제 True인 것중에 모델이 True라고 예측한 것의 비율
+ - Recall = (TP) / (TP + FN)
+ - Ex] 날씨가 맑다/아니다를 예측
+ - Precision: 날씨 예측 모델이 맑다로 예측했는데 실제 날씨가 맑았는지를 살펴보는 지표
+ - Recall: 실제 날씨가 맑은 날중에서 모델이 맑다고 예측한 비율을 나타내는 지표
+ - Precision, Recall은 모두 실제 True인 정답을 모델이 True라고 예측한 경우에 관심이 있으나 보는 관점이 다른 것
+ - Accuracy(정확도)
+ - True를 True로 False를 False라고 예측한 지표(Precision과 Recall은 True만 고려)
+ - 그러나 Accuracy의 경우 데이터가 한쪽으로 편중될시 문제가 발생
+ - 데이터가 한쪽으로 많이 쏠려 있을시 그 Data만 예측해도 정확도가 올라가게 됨
+ - F1 Score
+ - Precision과 Recall의 조화 평균
+ - F1 Score = 2 * 1 / ((1/Precision) + (1/Recall))
+ - F1 Score는 데이터 Label이 불균형 구조일 때 모델의 성능을 정확히 평가, 성능을 하나의 숫자로 표현이 가능
+
+ - https://sumniya.tistory.com/26
\ No newline at end of file
diff --git a/Transformer/01_TextClassification/colab/MotionClassifier.ipynb b/Transformer/01_TextClassification/colab/MotionClassifier.ipynb
new file mode 100644
index 0000000..48760e7
--- /dev/null
+++ b/Transformer/01_TextClassification/colab/MotionClassifier.ipynb
@@ -0,0 +1 @@
+{"cells":[{"cell_type":"code","source":["!pip3 install torch\n","!pip3 install torchvision"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"POAqZe4M6UNm","executionInfo":{"status":"ok","timestamp":1673341816630,"user_tz":-540,"elapsed":6922,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"9ffa3f0b-6599-4dca-e154-cbfc98daaee1"},"id":"POAqZe4M6UNm","execution_count":1,"outputs":[{"output_type":"stream","name":"stdout","text":["Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n","Requirement already satisfied: torch in /usr/local/lib/python3.8/dist-packages (1.13.0+cu116)\n","Requirement already satisfied: typing-extensions in /usr/local/lib/python3.8/dist-packages (from torch) (4.4.0)\n","Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n","Requirement already satisfied: torchvision in /usr/local/lib/python3.8/dist-packages (0.14.0+cu116)\n","Requirement already satisfied: typing-extensions in /usr/local/lib/python3.8/dist-packages (from torchvision) (4.4.0)\n","Requirement already satisfied: requests in /usr/local/lib/python3.8/dist-packages (from torchvision) (2.25.1)\n","Requirement already satisfied: numpy in /usr/local/lib/python3.8/dist-packages (from torchvision) (1.21.6)\n","Requirement already satisfied: torch==1.13.0 in /usr/local/lib/python3.8/dist-packages (from torchvision) (1.13.0+cu116)\n","Requirement already satisfied: pillow!=8.3.*,>=5.3.0 in /usr/local/lib/python3.8/dist-packages (from torchvision) (7.1.2)\n","Requirement already satisfied: chardet<5,>=3.0.2 in /usr/local/lib/python3.8/dist-packages (from requests->torchvision) (4.0.0)\n","Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.8/dist-packages (from requests->torchvision) (2.10)\n","Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.8/dist-packages (from requests->torchvision) (2022.12.7)\n","Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.8/dist-packages (from requests->torchvision) (1.24.3)\n"]}]},{"cell_type":"code","source":["!pip install datasets"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"68m-GDr66fxa","executionInfo":{"status":"ok","timestamp":1673341825377,"user_tz":-540,"elapsed":8766,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"fcdb4575-faf7-4211-c4b6-5528526a5df3"},"id":"68m-GDr66fxa","execution_count":2,"outputs":[{"output_type":"stream","name":"stdout","text":["Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n","Collecting datasets\n"," Downloading datasets-2.8.0-py3-none-any.whl (452 kB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m452.9/452.9 KB\u001b[0m \u001b[31m23.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hRequirement already satisfied: aiohttp in /usr/local/lib/python3.8/dist-packages (from datasets) (3.8.3)\n","Collecting huggingface-hub<1.0.0,>=0.2.0\n"," Downloading huggingface_hub-0.11.1-py3-none-any.whl (182 kB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m182.4/182.4 KB\u001b[0m \u001b[31m22.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hCollecting xxhash\n"," Downloading xxhash-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (213 kB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m213.0/213.0 KB\u001b[0m \u001b[31m15.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hCollecting responses<0.19\n"," Downloading responses-0.18.0-py3-none-any.whl (38 kB)\n","Requirement already satisfied: pyarrow>=6.0.0 in /usr/local/lib/python3.8/dist-packages (from datasets) (9.0.0)\n","Requirement already satisfied: dill<0.3.7 in /usr/local/lib/python3.8/dist-packages (from datasets) (0.3.6)\n","Requirement already satisfied: pandas in /usr/local/lib/python3.8/dist-packages (from datasets) (1.3.5)\n","Requirement already satisfied: tqdm>=4.62.1 in /usr/local/lib/python3.8/dist-packages (from datasets) (4.64.1)\n","Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.8/dist-packages (from datasets) (1.21.6)\n","Collecting multiprocess\n"," Downloading multiprocess-0.70.14-py38-none-any.whl (132 kB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m132.0/132.0 KB\u001b[0m \u001b[31m17.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hRequirement already satisfied: packaging in /usr/local/lib/python3.8/dist-packages (from datasets) (21.3)\n","Requirement already satisfied: fsspec[http]>=2021.11.1 in /usr/local/lib/python3.8/dist-packages (from datasets) (2022.11.0)\n","Requirement already satisfied: requests>=2.19.0 in /usr/local/lib/python3.8/dist-packages (from datasets) (2.25.1)\n","Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.8/dist-packages (from datasets) (6.0)\n","Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (1.3.3)\n","Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (6.0.3)\n","Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (1.8.2)\n","Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (22.2.0)\n","Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (1.3.1)\n","Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (4.0.2)\n","Requirement already satisfied: charset-normalizer<3.0,>=2.0 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (2.1.1)\n","Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.8/dist-packages (from huggingface-hub<1.0.0,>=0.2.0->datasets) (4.4.0)\n","Requirement already satisfied: filelock in /usr/local/lib/python3.8/dist-packages (from huggingface-hub<1.0.0,>=0.2.0->datasets) (3.8.2)\n","Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/local/lib/python3.8/dist-packages (from packaging->datasets) (3.0.9)\n","Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.8/dist-packages (from requests>=2.19.0->datasets) (2.10)\n","Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.8/dist-packages (from requests>=2.19.0->datasets) (1.24.3)\n","Requirement already satisfied: chardet<5,>=3.0.2 in /usr/local/lib/python3.8/dist-packages (from requests>=2.19.0->datasets) (4.0.0)\n","Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.8/dist-packages (from requests>=2.19.0->datasets) (2022.12.7)\n","Collecting urllib3<1.27,>=1.21.1\n"," Downloading urllib3-1.26.13-py2.py3-none-any.whl (140 kB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m140.6/140.6 KB\u001b[0m \u001b[31m17.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hRequirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.8/dist-packages (from pandas->datasets) (2022.7)\n","Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.8/dist-packages (from pandas->datasets) (2.8.2)\n","Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.8/dist-packages (from python-dateutil>=2.7.3->pandas->datasets) (1.15.0)\n","Installing collected packages: xxhash, urllib3, multiprocess, responses, huggingface-hub, datasets\n"," Attempting uninstall: urllib3\n"," Found existing installation: urllib3 1.24.3\n"," Uninstalling urllib3-1.24.3:\n"," Successfully uninstalled urllib3-1.24.3\n","Successfully installed datasets-2.8.0 huggingface-hub-0.11.1 multiprocess-0.70.14 responses-0.18.0 urllib3-1.26.13 xxhash-3.2.0\n"]}]},{"cell_type":"code","execution_count":3,"id":"2f3c6918","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"2f3c6918","executionInfo":{"status":"ok","timestamp":1673341831251,"user_tz":-540,"elapsed":5877,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"9827fa97-0000-4b0b-ea1c-245aa2e3b8f6"},"outputs":[{"output_type":"stream","name":"stdout","text":["현재 허브에는 18224개의 데이터셋이 존재\n","처음 10개 데이터셋: ['acronym_identification', 'ade_corpus_v2', 'adversarial_qa', 'aeslc', 'afrikaans_ner_corpus', 'ag_news', 'ai2_arc', 'air_dialogue', 'ajgt_twitter_ar', 'allegro_reviews']\n"]}],"source":["from datasets import list_datasets\n","\n","all_datasets = list_datasets()\n","print(f\"현재 허브에는 {len(all_datasets)}개의 데이터셋이 존재\")\n","print(f\"처음 10개 데이터셋: {all_datasets[:10]}\")"]},{"cell_type":"code","execution_count":4,"id":"feed8efa","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":377,"referenced_widgets":["15be0db60e7447b39d8a3efb0178f99d","6c2a216ef9454384a48332dfcd11e854","321df68850b64edbb4bf68f3efc4666c","2f251ea5146e42c8a10e3e1299d20ee7","e6f31047df2b410d91620c2f04f8714c","48d26eaa385347bb8f1df071dbb3fcf5","37e087967b954cf39bbed8efc00f8910","affcdf3100514e08ae78b45fdff62bb7","d4dbe15a78104e4080f3168d27a28f2f","17d39ba9ceb74e4a971c9d7fe0a388e5","ad9e1452c5a44231a749edefc88ec559","8596765b76d8475687f9a68471baa8c2","245cdb335127490eb54f0b211711187c","ee552a6f31454b0eba764bed5304c447","3ccae33d0f704dd4ab20ed71ad34629d","3e85d7ab6dc9402ea32346d736445024","ca67643c59934657987dbe05ff1f6a79","19ce3569029c443abcd029d7b1e5434f","ec09ef01f31b4c63b70a4f8686084da9","fff4ffa55682415d9f2964ed56978877","67591dd5ed2b4cd4aa72809954922e4e","41a7de832edd405cb11f56b9d7b5ce4b","4d4e5bdc8d534162ba27f70bd5e1f082","16d9f032b1d14503971178f91ccd9957","61e5561b9f374d0baf8d5f73094798fc","1a8d91a9ac674e41a6e0bf62c5b35477","a5addd4c0f114525acde2000dc504386","bbd6396309394aebac8c614a6a93bab6","8da6d9afaae94419b6580759f2760247","c0b1272b05d94b6d803882a8067d6afb","9c4da2a7141f4df88ffc59d3d63c694a","a980d9bda04444ed94d1519d7d628a49","f4a2e61b61d645629758014940686e07","204278e03cfa4697804abf20ff225813","1a82751128d443f4ac5b5303c1b73153","6c8c86abf14d44c5b4efdb368da1a513","bd9de3f5b9574ac3bf3a45d05196e734","e9c04430c58b45518f4e663d4732ebbe","740a2671e40842f79f715ba2d258440b","bc4307eb644e4a6ebfaa308ec79b5911","1f7ab1db7a5c43a386c4097d8469d4a2","e3e4baf588234e2a80af2e8e9858ed5f","31985c31745a4dfebf496417e9b46f3a","d0e5f1132e754fe59287c20f4b94f96b","7c2a5fe9cff34e31ac794deb1e788d8d","acb980cf775e44299b861e54a2eff750","62c0ff2b19c84cdfad5a83ff8720983f","7303d71c059d4066942330e3e70bede0","ac5e2af54b694df5983d1418332e7636","d4a4259ce3c14993af19a12affd34eb8","6f2500756b6f42c391298eeaed5f8854","c98890a867614a26920d4bb067bee304","85754c374f0d43e0bad78444da647c61","fcca2b9f79e0446f9e2f91e0270e9b4b","dd50d5fb200746ccaecb690921ec2c42","7bfe63d5a7c54b4ea7bc6221105d0cbb","e6d52c04d9644613b040bf53957eb46f","97c67c9ea7d9422581abe4a21e091b4b","7fcb248425894c77bef4326f479c1926","36258d1c281a4d2eb26f92513288726d","c0fa09c25d334099899a963c3bc36c00","2da35527796b47eb9ab3cb1cbcaccaf8","3820bb7924a14e27b2b23d83f63d6606","ca8c43945b2a4ec391c00c7b10b48504","1abe53ac1c564bb58c8b7c06ff097d11","b7828189ea0c4d7792da50b67e748efd","bed71be988084af68c0628bcbcfe63f6","17c3146d7a6449f4ad08ea1d3052add1","66ef552e0f0e4591bb39fb6f0fc034d6","5df6a4f46d82455488419dd8e7df3470","07a62cdc075c4e56a4e68189564ac136","c5d0ec37d3cd40558754aa9480eb2a6b","6084c39bce3c4b5ab13d7586c4431a3c","a71d88aedade49038831bc24d2281e3a","562cf26a240949c787ff51dc1f3ef4a2","df95194ca38e43fb83250fa86d096613","bf1dc66bb9164730b4fe171c24604125","c545f017ed8e4a3e8add6a23e7e37314","418167aad1554edea1dc5d1d6b879ccd","812d351083b24a9db1f535b1c6ef5e61","61cfdd6ec9664df98ad6fa2a202318f8","ec5517f772c648f8839125acc7163bd2","bf2332fb0c2c440b9b71f00818936a53","f12f2f547a7e417db26df14ef00c6c80","79be6dfa4f8145d09f072ed6f5cb4d3a","6cfca50926a04bf0b7455de53ed39e07","ede97313536a4a1882e0363a28d771fc","77b2d4741f58419c87725f88409fa34d","774d58af423e4d559b55fb7ca867b73e","2249c0ee4a6c4a12b5c1b004ef0f7bea","8c6a709ec66f4bf89d7dc1d99ebfcd85","b203c5ac560b4c0b91da8d3936c9701e","a56c46fb64984a99acf33eaf1d0749e2","654e5a1bf15944139a8af596fea472ad","57f07b09eaff4e2cbb2baf0f55aa6f56","2f78b83bf6ab4e309657919870f72914","7619571658cd4fa2841a04d78dc1fbe0","cc4c766ab3cd4d31a6a1c2bd62fd1ac1","d546cdab698241b593f2a4668cbbe718","1dcfb16f3b99497fab648fbc508622af","0edf7b00d74e4aa08a2a3dde6f9377d9","68663f8ab1464294ad24fe1550746272","62dec3a2e87744a8accf7e17bdfc4fe1","7e386e08bdd34471b5be7c5b578e3fe8","e0da041ea0a34884a3ac413a0632c05a","dc452bd507d04875922b12d79a12be8c","cdd8485752434ebabbc37d1e4f268e5d","131e10a0bb814925b81350ee521d10ec","9d0a2f1b16554acc8ee8fa798b3d80d5","4e22f63e5af146279cdafa6e14fa0235","3ac8646d66e9466cb19ca475d5c35319","4e20703456eb4983bfd220202193f770","ff1ff119aa864603bc9e179ad039db1c","79c0f1e2dedf459fad9d99c9da23921f","f4536072a0f245ce955bf17c4e69fff7","62e068731b004692b62bfbe3d6a7d4bd","21401b5db07742ccbd904349816513b8","12d18e67c09045aa95cb9e59a9b6e2a8","fca1857b9a8f48d28b74fc06d6986bd5","826dafb23b96401b854502fd7faff689","0f6f60d107854832ab63a53fbfbd079c","d7190fe0ffbe44ed88183863b01ae154","37f0d2cf136240c9a05d09530134731b","4b00f1b6b9a44812ace3d76be6eddc93","43a0ec11689f4195871427b3518a564d","a67d6cc425c94c4a8a114da132392197","46df938913904dff8d9d6ac483529a5c","140e7085dabc494d89eeeeb30d5f8a19","a2f713bb502644fd93663239d7af8c4d","aa0bb486843e4663952242eed3ba1261","1bb5c0a141984ad39f5fb3ce2be79552","f38775a718884ecdbaf317b2369550da"]},"id":"feed8efa","executionInfo":{"status":"ok","timestamp":1673341846622,"user_tz":-540,"elapsed":15373,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"6f88ae9d-a345-410c-e429-2153da87dd9b"},"outputs":[{"output_type":"display_data","data":{"text/plain":["Downloading builder script: 0%| | 0.00/3.97k [00:00, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"15be0db60e7447b39d8a3efb0178f99d"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Downloading metadata: 0%| | 0.00/3.28k [00:00, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"8596765b76d8475687f9a68471baa8c2"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Downloading readme: 0%| | 0.00/8.78k [00:00, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"4d4e5bdc8d534162ba27f70bd5e1f082"}},"metadata":{}},{"output_type":"stream","name":"stderr","text":["WARNING:datasets.builder:No config specified, defaulting to: emotion/split\n"]},{"output_type":"stream","name":"stdout","text":["Downloading and preparing dataset emotion/split to /root/.cache/huggingface/datasets/emotion/split/1.0.0/cca5efe2dfeb58c1d098e0f9eeb200e9927d889b5a03c67097275dfb5fe463bd...\n"]},{"output_type":"display_data","data":{"text/plain":["Downloading data files: 0%| | 0/3 [00:00, ?it/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"204278e03cfa4697804abf20ff225813"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Downloading data: 0%| | 0.00/592k [00:00, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"7c2a5fe9cff34e31ac794deb1e788d8d"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Downloading data: 0%| | 0.00/74.0k [00:00, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"7bfe63d5a7c54b4ea7bc6221105d0cbb"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Downloading data: 0%| | 0.00/74.9k [00:00, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"bed71be988084af68c0628bcbcfe63f6"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Extracting data files: 0%| | 0/3 [00:00, ?it/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"c545f017ed8e4a3e8add6a23e7e37314"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Generating train split: 0%| | 0/16000 [00:00, ? examples/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"774d58af423e4d559b55fb7ca867b73e"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Generating validation split: 0%| | 0/2000 [00:00, ? examples/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"1dcfb16f3b99497fab648fbc508622af"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Generating test split: 0%| | 0/2000 [00:00, ? examples/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"3ac8646d66e9466cb19ca475d5c35319"}},"metadata":{}},{"output_type":"stream","name":"stdout","text":["Dataset emotion downloaded and prepared to /root/.cache/huggingface/datasets/emotion/split/1.0.0/cca5efe2dfeb58c1d098e0f9eeb200e9927d889b5a03c67097275dfb5fe463bd. Subsequent calls will reuse this data.\n"]},{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/3 [00:00, ?it/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"d7190fe0ffbe44ed88183863b01ae154"}},"metadata":{}}],"source":["from datasets import load_dataset\n","\n","emotions = load_dataset(\"emotion\")"]},{"cell_type":"code","execution_count":5,"id":"cbd5df51","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"cbd5df51","executionInfo":{"status":"ok","timestamp":1673341846623,"user_tz":-540,"elapsed":29,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"8314008d-a773-4e5d-ea7a-c89d768f2479"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["DatasetDict({\n"," train: Dataset({\n"," features: ['text', 'label'],\n"," num_rows: 16000\n"," })\n"," validation: Dataset({\n"," features: ['text', 'label'],\n"," num_rows: 2000\n"," })\n"," test: Dataset({\n"," features: ['text', 'label'],\n"," num_rows: 2000\n"," })\n","})"]},"metadata":{},"execution_count":5}],"source":["emotions"]},{"cell_type":"code","execution_count":6,"id":"63910423","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"63910423","executionInfo":{"status":"ok","timestamp":1673341846623,"user_tz":-540,"elapsed":26,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"d3e3ac03-0dfb-45f5-d797-08e69d161f55"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["Dataset({\n"," features: ['text', 'label'],\n"," num_rows: 16000\n","})"]},"metadata":{},"execution_count":6}],"source":["train_ds = emotions[\"train\"]\n","train_ds"]},{"cell_type":"code","execution_count":7,"id":"29ff03af","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"29ff03af","executionInfo":{"status":"ok","timestamp":1673341846623,"user_tz":-540,"elapsed":24,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"dacc3214-fbb5-436f-ce8d-99f205ffe6b7"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["{'text': 'i didnt feel humiliated', 'label': 0}"]},"metadata":{},"execution_count":7}],"source":["train_ds[0]"]},{"cell_type":"code","execution_count":8,"id":"100d35c4","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"100d35c4","executionInfo":{"status":"ok","timestamp":1673341846623,"user_tz":-540,"elapsed":23,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"a2f438ad-febf-4f84-e52e-18f3ac105b25"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["['text', 'label']"]},"metadata":{},"execution_count":8}],"source":["train_ds.column_names"]},{"cell_type":"code","execution_count":9,"id":"dd5f381c","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"dd5f381c","executionInfo":{"status":"ok","timestamp":1673341846623,"user_tz":-540,"elapsed":22,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"2936877e-856e-4c1f-81e2-9bc3a2a87be9"},"outputs":[{"output_type":"stream","name":"stdout","text":["{'text': Value(dtype='string', id=None), 'label': ClassLabel(names=['sadness', 'joy', 'love', 'anger', 'fear', 'surprise'], id=None)}\n"]}],"source":["# Dataset의 속성\n","print(train_ds.features)"]},{"cell_type":"code","execution_count":10,"id":"37d99831","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"37d99831","executionInfo":{"status":"ok","timestamp":1673341846623,"user_tz":-540,"elapsed":21,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"c30b4b56-b13f-4f43-8eb2-1f8ca3a5ff20"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["{'text': ['i didnt feel humiliated',\n"," 'i can go from feeling so hopeless to so damned hopeful just from being around someone who cares and is awake',\n"," 'im grabbing a minute to post i feel greedy wrong',\n"," 'i am ever feeling nostalgic about the fireplace i will know that it is still on the property',\n"," 'i am feeling grouchy'],\n"," 'label': [0, 0, 3, 2, 3]}"]},"metadata":{},"execution_count":10}],"source":["train_ds[:5]"]},{"cell_type":"code","execution_count":11,"id":"8c00c688","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"8c00c688","executionInfo":{"status":"ok","timestamp":1673341846623,"user_tz":-540,"elapsed":20,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"a0638f20-0487-44c5-db17-deac6f76a52f"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["['i didnt feel humiliated',\n"," 'i can go from feeling so hopeless to so damned hopeful just from being around someone who cares and is awake',\n"," 'im grabbing a minute to post i feel greedy wrong',\n"," 'i am ever feeling nostalgic about the fireplace i will know that it is still on the property',\n"," 'i am feeling grouchy']"]},"metadata":{},"execution_count":11}],"source":["train_ds['text'][:5]"]},{"cell_type":"code","execution_count":12,"id":"f6dd1a51","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":206},"id":"f6dd1a51","executionInfo":{"status":"ok","timestamp":1673341846624,"user_tz":-540,"elapsed":19,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"5c0a6a9b-1cde-4769-d985-8a56ec2cde83"},"outputs":[{"output_type":"execute_result","data":{"text/plain":[" text label\n","0 i didnt feel humiliated 0\n","1 i can go from feeling so hopeless to so damned... 0\n","2 im grabbing a minute to post i feel greedy wrong 3\n","3 i am ever feeling nostalgic about the fireplac... 2\n","4 i am feeling grouchy 3"],"text/html":["\n","
\n","
\n","
\n","\n","
\n"," \n","
\n","
\n","
text
\n","
label
\n","
\n"," \n"," \n","
\n","
0
\n","
i didnt feel humiliated
\n","
0
\n","
\n","
\n","
1
\n","
i can go from feeling so hopeless to so damned...
\n","
0
\n","
\n","
\n","
2
\n","
im grabbing a minute to post i feel greedy wrong
\n","
3
\n","
\n","
\n","
3
\n","
i am ever feeling nostalgic about the fireplac...
\n","
2
\n","
\n","
\n","
4
\n","
i am feeling grouchy
\n","
3
\n","
\n"," \n","
\n","
\n"," \n"," \n"," \n","\n"," \n","
\n","
\n"," "]},"metadata":{},"execution_count":12}],"source":["import pandas as pd\n","\n","emotions.set_format(type=\"pandas\")\n","df = emotions[\"train\"][:]\n","df.head()"]},{"cell_type":"code","execution_count":13,"id":"44b1fd35","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":206},"id":"44b1fd35","executionInfo":{"status":"ok","timestamp":1673341847308,"user_tz":-540,"elapsed":689,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"517a6d8a-9827-43d8-e204-7256ac6bee8a"},"outputs":[{"output_type":"execute_result","data":{"text/plain":[" text label label_name\n","0 i didnt feel humiliated 0 sadness\n","1 i can go from feeling so hopeless to so damned... 0 sadness\n","2 im grabbing a minute to post i feel greedy wrong 3 anger\n","3 i am ever feeling nostalgic about the fireplac... 2 love\n","4 i am feeling grouchy 3 anger"],"text/html":["\n","
"],"image/png":"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\n"},"metadata":{"needs_background":"light"}}],"source":["import matplotlib.pyplot as plt\n","\n","# plot.barh() : Make a horizontal bar plot\n","df[\"label_name\"].value_counts(ascending=True).plot.barh()\n","plt.title(\"Frequency of Classes\")\n","plt.show()"]},{"cell_type":"code","execution_count":15,"id":"50520dc3","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":335},"id":"50520dc3","executionInfo":{"status":"ok","timestamp":1673341847309,"user_tz":-540,"elapsed":16,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"14c364fc-f39d-4c5e-9176-a52d437fcb66"},"outputs":[{"output_type":"stream","name":"stderr","text":["/usr/local/lib/python3.8/dist-packages/matplotlib/cbook/__init__.py:1376: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.\n"," X = np.atleast_1d(X.T if isinstance(X, np.ndarray) else np.asarray(X))\n"]},{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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\n"},"metadata":{"needs_background":"light"}}],"source":["df[\"Words Per Tweet\"] = df[\"text\"].str.split().apply(len)\n","df.boxplot(\"Words Per Tweet\", by=\"label_name\", grid=False, showfliers=False, color=\"black\")\n","plt.suptitle(\"\")\n","plt.xlabel(\"\")\n","plt.show()"]},{"cell_type":"code","execution_count":16,"id":"bae0a4c8","metadata":{"id":"bae0a4c8","executionInfo":{"status":"ok","timestamp":1673341847309,"user_tz":-540,"elapsed":11,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"outputs":[],"source":["# 데이터셋의 출력 포맷 초기화\n","emotions.reset_format()"]},{"cell_type":"markdown","id":"530d7e4a","metadata":{"id":"530d7e4a"},"source":["# 토큰화"]},{"cell_type":"markdown","id":"b397f12b","metadata":{"id":"b397f12b"},"source":["## 문자 토큰화\n","각 문자를 개별로 모델에 주입 \n","파이썬의 str 객체 내부는 사실 배열이므로 문자 수준의 토큰화가 손쉽게 가능"]},{"cell_type":"code","execution_count":17,"id":"9b5c18a4","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"9b5c18a4","executionInfo":{"status":"ok","timestamp":1673341847310,"user_tz":-540,"elapsed":12,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"81675c55-2892-4542-fd6d-d6fbf120999b"},"outputs":[{"output_type":"stream","name":"stdout","text":["['T', 'o', 'k', 'e', 'n', 'i', 'z', 'i', 'n', 'g', ' ', 't', 'e', 'x', 't', ' ', 'i', 's', ' ', 'a', ' ', 'c', 'o', 'r', 'e', ' ', 't', 'a', 's', 'k', ' ', 'o', 'f', ' ', 'N', 'L', 'P', '.']\n"]}],"source":["text = \"Tokenizing text is a core task of NLP.\"\n","tokenized_text = list(text)\n","print(tokenized_text)"]},{"cell_type":"code","execution_count":18,"id":"acf0acdd","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"acf0acdd","executionInfo":{"status":"ok","timestamp":1673341847310,"user_tz":-540,"elapsed":10,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"88f785d3-4cc2-4635-c044-e7368fb02582"},"outputs":[{"output_type":"stream","name":"stdout","text":["{' ': 0, '.': 1, 'L': 2, 'N': 3, 'P': 4, 'T': 5, 'a': 6, 'c': 7, 'e': 8, 'f': 9, 'g': 10, 'i': 11, 'k': 12, 'n': 13, 'o': 14, 'r': 15, 's': 16, 't': 17, 'x': 18, 'z': 19}\n"]}],"source":["token2idx = {ch: idx for idx, ch in enumerate(sorted(set(tokenized_text)))}\n","print(token2idx)"]},{"cell_type":"code","execution_count":19,"id":"ff118c22","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"ff118c22","executionInfo":{"status":"ok","timestamp":1673341847310,"user_tz":-540,"elapsed":9,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"d86f3c49-412b-43fa-e063-431158532361"},"outputs":[{"output_type":"stream","name":"stdout","text":["[5, 14, 12, 8, 13, 11, 19, 11, 13, 10, 0, 17, 8, 18, 17, 0, 11, 16, 0, 6, 0, 7, 14, 15, 8, 0, 17, 6, 16, 12, 0, 14, 9, 0, 3, 2, 4, 1]\n"]}],"source":["input_ids = [token2idx[token] for token in tokenized_text]\n","print(input_ids)"]},{"cell_type":"code","execution_count":20,"id":"8508c09d","metadata":{"id":"8508c09d","executionInfo":{"status":"ok","timestamp":1673341851106,"user_tz":-540,"elapsed":3803,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"outputs":[],"source":["import torch\n","import torch.nn.functional as F"]},{"cell_type":"code","execution_count":21,"id":"4ce2e4e1","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"4ce2e4e1","executionInfo":{"status":"ok","timestamp":1673341851106,"user_tz":-540,"elapsed":31,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"f93c10f1-a432-4141-c108-e40acb976646"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["torch.Size([38, 20])"]},"metadata":{},"execution_count":21}],"source":["input_ids = torch.tensor(input_ids)\n","one_hot_encodings = F.one_hot(input_ids, num_classes=len(token2idx))\n","one_hot_encodings.shape"]},{"cell_type":"markdown","id":"8b8449c2","metadata":{"id":"8b8449c2"},"source":["38개의 입력 토큰 각각에 20차원의 원-핫 벡터가 만들어짐\n","\n","5 .....len(20) \n","14.....len(20) \n","12.....len(20) \n",".\n",".\n",". .....len(20) \n","2 .....len(20) \n","4 .....len(20) \n","1 .....len(20) \n","\n","각 토큰별 20개의 원소를 가진 벡터가 만들어짐"]},{"cell_type":"code","execution_count":22,"id":"58874e4b","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"58874e4b","executionInfo":{"status":"ok","timestamp":1673341851107,"user_tz":-540,"elapsed":28,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"e5ff92cb-cc63-455c-f447-8ed4e1b8846c"},"outputs":[{"output_type":"stream","name":"stdout","text":["토큰: T\n","텐서 인덱스: 5\n","원-핫 인코딩: tensor([0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n"]}],"source":["print(f\"토큰: {tokenized_text[0]}\")\n","print(f\"텐서 인덱스: {input_ids[0]}\")\n","print(f\"원-핫 인코딩: {one_hot_encodings[0]}\")"]},{"cell_type":"markdown","id":"5729671a","metadata":{"id":"5729671a"},"source":["## 단어 토큰화\n","텍스트를 문자가 아닌 단어로 분할하고 각 단어를 정수로 매핑"]},{"cell_type":"code","execution_count":23,"id":"6fbe209f","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"6fbe209f","executionInfo":{"status":"ok","timestamp":1673341851107,"user_tz":-540,"elapsed":23,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"d3cd0fbe-5a53-411d-f084-ac04b70efff5"},"outputs":[{"output_type":"stream","name":"stdout","text":["['Tokenizing', 'text', 'is', 'a', 'core', 'task', 'of', 'NLP.']\n"]}],"source":["tokenized_text = text.split()\n","print(tokenized_text)"]},{"cell_type":"markdown","id":"f8988f71","metadata":{"id":"f8988f71"},"source":["단어 토큰화는 단어에 곡용, 활용형, 철자 오류가 포함되어 어휘 사전이 금세 수백만 개까지 늘어나게 됨"]},{"cell_type":"markdown","id":"bfb042f0","metadata":{"id":"bfb042f0"},"source":["단어를 토큰화 하게 되면 어휘사전이 커지게 되고 이러면 신경망의 파라미터 역시 많이 필요하게 됨\n"," \n","- 어휘 사전의 크기를 제한하는 일반적인 방법은 드물게 등장하는 단어는 무시하는 것. 이러한 단어는 'UNK' 토큰으로 매핑\n","- 하지만 이렇게 되면 토큰화 과정에서 중요 정보 일부를 잃게 됨\n","- 모든 입력 정보와 일부 입력 구조를 유지하는 문자 토큰화와 단어 토큰화를 절충하는 방법으로 **부분단어 토큰화(subword tokenization)** 라는 방법"]},{"cell_type":"markdown","id":"95a96577","metadata":{"id":"95a96577"},"source":["## 부분단어 토큰화\n","- 부분단어 토큰화는 문자 단어 토큰화 + 단어 토큰화 의 장점을 결합\n","- 드물게 등장하는 단어를 더 작은 단위로 나누면 모델이 복잡한 단어나 철자 오류를 처리하기 용이\n","- 다른 방법으론 입력 길이를 적절한 크기로 유지하기 위해 자주 등장하는 단어를 고유한 항목으로 유지\n","
\n","- NLP 분야에서 널리 사용되는 부분단어 토큰화 중 먼저 BERT와 DistilBERT의 토크나이저 **WordPiece**"]},{"cell_type":"code","source":["!pip install transformers"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"NmnMUChO63ZZ","executionInfo":{"status":"ok","timestamp":1673341860819,"user_tz":-540,"elapsed":9733,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"c0b8dfaa-3526-445d-db30-cdf01b04fed8"},"id":"NmnMUChO63ZZ","execution_count":24,"outputs":[{"output_type":"stream","name":"stdout","text":["Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n","Collecting transformers\n"," Downloading transformers-4.25.1-py3-none-any.whl (5.8 MB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m5.8/5.8 MB\u001b[0m \u001b[31m79.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hRequirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.8/dist-packages (from transformers) (6.0)\n","Requirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.8/dist-packages (from transformers) (4.64.1)\n","Collecting tokenizers!=0.11.3,<0.14,>=0.11.1\n"," Downloading tokenizers-0.13.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.6/7.6 MB\u001b[0m \u001b[31m69.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hRequirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.8/dist-packages (from transformers) (1.21.6)\n","Requirement already satisfied: huggingface-hub<1.0,>=0.10.0 in /usr/local/lib/python3.8/dist-packages (from transformers) (0.11.1)\n","Requirement already satisfied: filelock in /usr/local/lib/python3.8/dist-packages (from transformers) (3.8.2)\n","Requirement already satisfied: requests in /usr/local/lib/python3.8/dist-packages (from transformers) (2.25.1)\n","Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.8/dist-packages (from transformers) (2022.6.2)\n","Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.8/dist-packages (from transformers) (21.3)\n","Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.8/dist-packages (from huggingface-hub<1.0,>=0.10.0->transformers) (4.4.0)\n","Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/local/lib/python3.8/dist-packages (from packaging>=20.0->transformers) (3.0.9)\n","Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.8/dist-packages (from requests->transformers) (2022.12.7)\n","Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.8/dist-packages (from requests->transformers) (1.26.13)\n","Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.8/dist-packages (from requests->transformers) (2.10)\n","Requirement already satisfied: chardet<5,>=3.0.2 in /usr/local/lib/python3.8/dist-packages (from requests->transformers) (4.0.0)\n","Installing collected packages: tokenizers, transformers\n","Successfully installed tokenizers-0.13.2 transformers-4.25.1\n"]}]},{"cell_type":"code","execution_count":25,"id":"2379be10","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":145,"referenced_widgets":["2cbf56d11bd84bd39a2e8f00be50ab98","fa29a3affda84dc38e53a7ec02e4a1f2","1886290ec37f4f7eb7dced6d494cbe6a","b37bdca77d064cf2b7ef2bf21edc554b","14709700a96448cda2f036f9886463f9","e9230e8b794f433e9ed48f62a244c1f3","16ab6bdfe98a44dcb15fb374ffdd7dcb","f9ac65f7c12b4c70b1481fd0052ebcab","a49d46601b5d4395bd61aa89b3c4f261","fa363e3b514f47909eb1caf3bda7d4ac","4c2ddc339f2948cda9331332583f71ef","815b635b8e2d429ab30cc56170508f2b","2783f2b3b469440e829ecf06ce441e24","740089b7671147a8b2aa5334dbe299a1","a55dbf76cedf4c51a80127d1368f00fa","fcc0299f56d54e069e252951755dd8d9","5a16a657767448af9953262cbe566fda","279728f2f8e842af9b078cdd58d71af0","a3452d2825e040f9aad5667274d1d9d9","c8b548fcf7e14265ade8eb891b4717bf","3ef5ff5cb4c54628bb3bc720a65f93a2","eb8260186835427ab020dbdf4d484794","5f67cfa6f99c4045a77ef8f221ed8a72","b07045b7f68944aeb2c8bd0e41994b93","137fcc68aefc48179ababf622aad0776","96b98cd1ec9946d58e510739cf43324e","c6eb6b1626314623b55ad235895da2f9","72cad00b563945b6b5c9c43f8eb34172","2971a235130f4f72b0b8486364d63ad5","c70eb58ccb2347d38c8cde483c47191f","b7b7225c7d7943e280b421c760b72caa","147c8d4a28d146a792e7c8a037bcb011","823d188f499e47f6a8d87503c4ad77f7","029fdd7a3b0842229d7b0a93c5867fa1","438bcf79e8694464ad3a846a0643be03","a8baed453dd9425fb3d788033508119d","375bd083c65b4bf882f21c29c858890c","149d349aa3cb46c588d164bd37b84117","a12bce3f9ff841f683b19a6b581c587f","4d864c90cd41415e9e610edf9fba526b","323fcf7620f04d9da487b8628e229e5b","c8259c53289d4100a9fab111d220bea3","7ac6ebbf3dc040ae9a9b3614557da598","6d19cf0811e64cd7b29cb63458060fad"]},"id":"2379be10","executionInfo":{"status":"ok","timestamp":1673341874956,"user_tz":-540,"elapsed":14138,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"8f74a0e1-dd3f-43e8-f284-26c904b9be1d"},"outputs":[{"output_type":"display_data","data":{"text/plain":["Downloading: 0%| | 0.00/28.0 [00:00, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"2cbf56d11bd84bd39a2e8f00be50ab98"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Downloading: 0%| | 0.00/483 [00:00, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"815b635b8e2d429ab30cc56170508f2b"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Downloading: 0%| | 0.00/232k [00:00, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"5f67cfa6f99c4045a77ef8f221ed8a72"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Downloading: 0%| | 0.00/466k [00:00, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"029fdd7a3b0842229d7b0a93c5867fa1"}},"metadata":{}}],"source":["from transformers import AutoTokenizer\n","\n","model_ckpt = \"distilbert-base-uncased\"\n","tokenizer = AutoTokenizer.from_pretrained(model_ckpt)"]},{"cell_type":"code","execution_count":26,"id":"6b1e2b90","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"6b1e2b90","executionInfo":{"status":"ok","timestamp":1673341874957,"user_tz":-540,"elapsed":22,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"16c0fabd-4d45-42d4-ed44-4c87993154ae"},"outputs":[{"output_type":"stream","name":"stdout","text":["Tokenizing text is a core task of NLP.\n","{'input_ids': [101, 19204, 6026, 3793, 2003, 1037, 4563, 4708, 1997, 17953, 2361, 1012, 102], 'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}\n"]}],"source":["encoded_text = tokenizer(text)\n","print(text)\n","print(encoded_text)"]},{"cell_type":"code","execution_count":27,"id":"0b85a1b6","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"0b85a1b6","executionInfo":{"status":"ok","timestamp":1673341874957,"user_tz":-540,"elapsed":17,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"500481b2-c7fd-43ab-e330-d1fb9cdfde0f"},"outputs":[{"output_type":"stream","name":"stdout","text":["['[CLS]', 'token', '##izing', 'text', 'is', 'a', 'core', 'task', 'of', 'nl', '##p', '.', '[SEP]']\n"]}],"source":["tokens = tokenizer.convert_ids_to_tokens(encoded_text.input_ids)\n","print(tokens)"]},{"cell_type":"markdown","id":"94b6f7c5","metadata":{"id":"94b6f7c5"},"source":["1. 특수 토큰 [CLS], [SEP]가 시퀀스 처음과 끝에 추가\n","2. 토큰이 모두 소문자로 변환\n","3. 'tokenizing'과 'NLP'가 각각 2개의 토큰으로 나뉘어짐. 자주 등장하는 단어가 아니기 때문 ##izing, ##p에 있는 #은 공백이 아님을 의미\n","\n","이런 접두사가 붙은 토큰은 문자열로 다시 바꿀 때 앞의 토큰과 합침"]},{"cell_type":"code","execution_count":28,"id":"259920c8","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"259920c8","executionInfo":{"status":"ok","timestamp":1673341874957,"user_tz":-540,"elapsed":13,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"6e40373a-15c9-4b35-c5da-7ddfa7551462"},"outputs":[{"output_type":"stream","name":"stdout","text":["[CLS] tokenizing text is a core task of nlp. [SEP]\n"]}],"source":["print(tokenizer.convert_tokens_to_string(tokens))"]},{"cell_type":"code","execution_count":29,"id":"46c19084","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"46c19084","executionInfo":{"status":"ok","timestamp":1673341874958,"user_tz":-540,"elapsed":13,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"6713e3b3-974f-4acc-fb61-4af89cf3cf87"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["30522"]},"metadata":{},"execution_count":29}],"source":["# 어휘 사전 크기 확인\n","tokenizer.vocab_size"]},{"cell_type":"code","execution_count":30,"id":"15e57040","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"15e57040","executionInfo":{"status":"ok","timestamp":1673341874958,"user_tz":-540,"elapsed":11,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"8f35ebb4-8bf7-4ecc-fe38-a71d549097db"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["512"]},"metadata":{},"execution_count":30}],"source":["# 모델 최대 문맥 크기\n","tokenizer.model_max_length"]},{"cell_type":"code","execution_count":31,"id":"dbbba4bb","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"dbbba4bb","executionInfo":{"status":"ok","timestamp":1673341874958,"user_tz":-540,"elapsed":10,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"b07f3a9f-2f66-4096-c557-a4212ac10115"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["['input_ids', 'attention_mask']"]},"metadata":{},"execution_count":31}],"source":["# 모델이 정방향 패스(forward pass)\n","tokenizer.model_input_names"]},{"cell_type":"markdown","id":"f8fa19c9","metadata":{"id":"f8fa19c9"},"source":["# 전체 데이터셋 토큰화\n"]},{"cell_type":"code","execution_count":32,"id":"5e5a58d3","metadata":{"id":"5e5a58d3","executionInfo":{"status":"ok","timestamp":1673341874958,"user_tz":-540,"elapsed":9,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"outputs":[],"source":["def tokenize(batch):\n"," return tokenizer(batch[\"text\"], padding=True, truncation=True)"]},{"cell_type":"markdown","id":"db6da0cc","metadata":{"id":"db6da0cc"},"source":["Tokenizer를 샘플 배치에 적용\n"," \n","- padding=True: 배치에 있는 가장 긴 샘플 크기에 맞춰 샘플을 0으로 패딩\n","- truncation=True: 모델의 최대 문맥 크기에 맞춰 샘플을 잘라냄"]},{"cell_type":"code","execution_count":33,"id":"9658e034","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"9658e034","executionInfo":{"status":"ok","timestamp":1673341874958,"user_tz":-540,"elapsed":8,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"edf35851-8dfa-49ae-e48a-4c7e85ecabef"},"outputs":[{"output_type":"stream","name":"stdout","text":["{'input_ids': [[101, 1045, 2134, 2102, 2514, 26608, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [101, 1045, 2064, 2175, 2013, 3110, 2061, 20625, 2000, 2061, 9636, 17772, 2074, 2013, 2108, 2105, 2619, 2040, 14977, 1998, 2003, 8300, 102]], 'attention_mask': [[1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}\n"]}],"source":["print(tokenize(emotions[\"train\"][:2]))"]},{"cell_type":"code","execution_count":34,"id":"03458041","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":113,"referenced_widgets":["69c863e980624e10bb6afad72fed6cd1","3c160b0fb3d7466aa0f79c6233d16001","8b26dd18f285460296a17d6b856f30aa","d795813bd1e447ec8ca874a4eb58c806","8b9b4713c05e402491fa537414d0bd0b","d49fc731f3634038b245ed8b19fec175","ac1f10abc80449b3b570f462332de626","834b4dee42f84269801adc0f5517a89f","6c363fc2f9bd454f86bd477dada30a71","17d0256a8547455fbe4e4f6935cea7a4","f622e7b698bf47bcb1233230e6771772","048922deeb3141b1805c22f41a880ecc","6148410294ec48c3804ed15e7034cb4f","70773097ffad4c9b85b6a739a514e1b3","3da5ccb880f848dcaef28bb694c4bb70","c9dcf555150b4ecd80addf1c1bb33824","5ab0a87049344e46929a316bc2a2e3e9","deb4b8225c6d4fdba6f2efbb33b17000","a7953cfec05a4585b366d3d8e4b2123b","b912f40f4cc247f3a782da9507ef3e09","1a2e990827f248e7bc47da5ef7f17826","31014192818d46ff8b3671e3c5d180de","0177ae63703f4b01889c07ad4cf86e29","02a9d73f776e431198ace480d231d10b","3036423ebe6a49ad91f0de6e728d0ad8","85c41307b3c84b5a86a24f8a2463a939","9a097fa5b27749c7aa379a4ca349bf5b","e21e33b65f604a56b7ee6c3839362574","41bd67ce77564fa5be2527f800620262","48ba903b498a4dbe82b77dd7df3b28c5","4d0d3d035fc6444fa43b487ce81bb981","5ad971ef99af4d379967cf291d13ab74","a8c5dfa23d0f46d5a2b03350abb62c07"]},"id":"03458041","executionInfo":{"status":"ok","timestamp":1673341875660,"user_tz":-540,"elapsed":709,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"f24f9a52-ed17-4b4d-e482-e2a83330c933"},"outputs":[{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/1 [00:00, ?ba/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"69c863e980624e10bb6afad72fed6cd1"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/1 [00:00, ?ba/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"048922deeb3141b1805c22f41a880ecc"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/1 [00:00, ?ba/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"0177ae63703f4b01889c07ad4cf86e29"}},"metadata":{}}],"source":["emotions_encoded = emotions.map(tokenize, batched=True, batch_size=None)"]},{"cell_type":"markdown","id":"ceffe2fe","metadata":{"id":"ceffe2fe"},"source":["map() 메서드는 말뭉치에 있는 모든 샘플에 개별적으로 작용 \n","\n","- batched=True: 트윗을 배치로 인코딩\n","- batch_size=None: 전체 데이터셋이 하나의 배치로 tokenize() 함수에 적용, 입력 텐서와 어텐션 마스크는 전역적으로 동일한 크기로 생성"]},{"cell_type":"code","execution_count":35,"id":"3de1ab5c","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"3de1ab5c","executionInfo":{"status":"ok","timestamp":1673341875660,"user_tz":-540,"elapsed":4,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"b30e5c75-b3d2-4e6a-e93c-35a19694756f"},"outputs":[{"output_type":"stream","name":"stdout","text":["['text', 'label', 'input_ids', 'attention_mask']\n"]}],"source":["print(emotions_encoded[\"train\"].column_names)"]},{"cell_type":"markdown","id":"c3d9224c","metadata":{"id":"c3d9224c"},"source":["# 텍스트 분류 모델 훈련\n","\n","### 특성 추출\n","사전 훈련된 모델을 수정하지 않고 은닉 상태를 특성(feature)으로 사용해 분류 모델을 훈련\n","\n","### 미세 튜닝\n","사전 훈련된 모델의 파라미터도 업데이트하기 위해 전체 모델을 엔드-투-엔드로 훈련"]},{"cell_type":"markdown","id":"2b923107","metadata":{"id":"2b923107"},"source":["## 1. 텍스트 분류 모델 훈련 - 특성 추출 방법\n"]},{"cell_type":"markdown","id":"c6560f7f","metadata":{"id":"c6560f7f"},"source":["사전 훈련된 모델 사용하기"]},{"cell_type":"code","execution_count":36,"id":"e6f48da5","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":121,"referenced_widgets":["6d20ccf8cbfc434d83d29cf94d66fa2f","563f6e63d6334ffdb92b824ca4543e26","3a3663e4ccf447178e720efe74226eb2","bd5032bb6bd04505a16d6aaeb344a411","843844a0068c4252931450f24da6b86e","bcd73e1f781c4d1d950ae79b4f6787bf","3490bc468f2e4bbeb57e76aaf9706308","2b8f7b15d44346e8a86b7414be26c8f3","e3bad1e7fa8142ce9d618d0c8b1a2225","402cabec74604cc09d0fff59dd529621","4882a7357dd3468491f3bf78eec1909c"]},"id":"e6f48da5","executionInfo":{"status":"ok","timestamp":1673341889298,"user_tz":-540,"elapsed":13640,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"495b6d23-a7ac-4d6a-931f-95091aa040ab"},"outputs":[{"output_type":"display_data","data":{"text/plain":["Downloading: 0%| | 0.00/268M [00:00, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"6d20ccf8cbfc434d83d29cf94d66fa2f"}},"metadata":{}},{"output_type":"stream","name":"stderr","text":["Some weights of the model checkpoint at distilbert-base-uncased were not used when initializing DistilBertModel: ['vocab_layer_norm.bias', 'vocab_transform.bias', 'vocab_layer_norm.weight', 'vocab_projector.weight', 'vocab_projector.bias', 'vocab_transform.weight']\n","- This IS expected if you are initializing DistilBertModel from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n","- This IS NOT expected if you are initializing DistilBertModel from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n"]}],"source":["from transformers import AutoModel\n","\n","model_ckpt = \"distilbert-base-uncased\"\n","device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n","model = AutoModel.from_pretrained(model_ckpt).to(device)"]},{"cell_type":"code","execution_count":37,"id":"5e3da298","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"5e3da298","executionInfo":{"status":"ok","timestamp":1673341889299,"user_tz":-540,"elapsed":28,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"dda0ebab-4117-4dd9-d2b5-bd91d6250cae"},"outputs":[{"output_type":"stream","name":"stdout","text":["입력 텐서 크기: torch.Size([1, 6])\n"]}],"source":["text = \"this is a test\"\n","inputs = tokenizer(text, return_tensors=\"pt\")\n","print(f\"입력 텐서 크기: {inputs['input_ids'].size()}\")"]},{"cell_type":"code","execution_count":38,"id":"4f99ad6f","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"4f99ad6f","executionInfo":{"status":"ok","timestamp":1673341889299,"user_tz":-540,"elapsed":25,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"85baedc1-5401-401e-dd42-bc2faa6ec094"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["dict_items([('input_ids', tensor([[ 101, 2023, 2003, 1037, 3231, 102]])), ('attention_mask', tensor([[1, 1, 1, 1, 1, 1]]))])"]},"metadata":{},"execution_count":38}],"source":["inputs.items()"]},{"cell_type":"code","execution_count":39,"id":"a81ee80b","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"a81ee80b","executionInfo":{"status":"ok","timestamp":1673341889299,"user_tz":-540,"elapsed":21,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"8bee0bfb-90c4-47e0-b66a-dc074e034beb"},"outputs":[{"output_type":"stream","name":"stdout","text":["k: input_ids\n","v: tensor([[ 101, 2023, 2003, 1037, 3231, 102]])\n","k: attention_mask\n","v: tensor([[1, 1, 1, 1, 1, 1]])\n"]}],"source":["for k, v in inputs.items():\n"," print(f\"k: {k}\")\n"," print(f\"v: {v}\")"]},{"cell_type":"code","execution_count":40,"id":"c3d5a3ca","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"c3d5a3ca","executionInfo":{"status":"ok","timestamp":1673341892896,"user_tz":-540,"elapsed":3616,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"30aa5c1d-3005-46cf-aff1-49fd7afb635b"},"outputs":[{"output_type":"stream","name":"stdout","text":["BaseModelOutput(last_hidden_state=tensor([[[-0.1565, -0.1862, 0.0528, ..., -0.1188, 0.0662, 0.5470],\n"," [-0.3575, -0.6484, -0.0618, ..., -0.3040, 0.3508, 0.5221],\n"," [-0.2772, -0.4459, 0.1818, ..., -0.0948, -0.0076, 0.9958],\n"," [-0.2841, -0.3917, 0.3753, ..., -0.2151, -0.1173, 1.0526],\n"," [ 0.2661, -0.5094, -0.3180, ..., -0.4203, 0.0144, -0.2149],\n"," [ 0.9441, 0.0112, -0.4714, ..., 0.1439, -0.7288, -0.1619]]],\n"," device='cuda:0'), hidden_states=None, attentions=None)\n"]}],"source":["inputs = {k:v.to(device) for k,v in inputs.items()}\n","with torch.no_grad():\n"," outputs = model(**inputs)\n"," \n","print(outputs)"]},{"cell_type":"code","execution_count":41,"id":"a7b6ba5d","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"a7b6ba5d","executionInfo":{"status":"ok","timestamp":1673341892897,"user_tz":-540,"elapsed":13,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"a81448d1-223a-4f49-80a7-25d48a80832f"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["torch.Size([1, 6, 768])"]},"metadata":{},"execution_count":41}],"source":["outputs.last_hidden_state.size()"]},{"cell_type":"markdown","id":"7f551af1","metadata":{"id":"7f551af1"},"source":["은닉 상태 텐서의 크기는 [batch_size, n_tokens, hidden_dim] \n","-> 6개의 입력 토큰마다 768차원의 벡터가 반환"]},{"cell_type":"code","execution_count":42,"id":"9a5b950a","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"9a5b950a","executionInfo":{"status":"ok","timestamp":1673341892897,"user_tz":-540,"elapsed":9,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"f0fc13d5-071e-429f-ee2b-2513a406595e"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["torch.Size([1, 768])"]},"metadata":{},"execution_count":42}],"source":["outputs.last_hidden_state[:,0].size()"]},{"cell_type":"code","execution_count":43,"id":"c6eb5006","metadata":{"id":"c6eb5006","executionInfo":{"status":"ok","timestamp":1673341892897,"user_tz":-540,"elapsed":4,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"outputs":[],"source":["def extract_hidden_states(batch):\n"," inputs = {k:v.to(device) for k,v in batch.items() if k in tokenizer.model_input_names}\n"," \n"," # 마지막 은닉 상태를 추출\n"," with torch.no_grad():\n"," last_hidden_state = model(**inputs).last_hidden_state\n"," \n"," # [CLS] 토큰에 대한 벡터를 반환\n"," return {\"hidden_state\": last_hidden_state[:,0].cpu().numpy()}"]},{"cell_type":"code","execution_count":44,"id":"1faae4d9","metadata":{"id":"1faae4d9","executionInfo":{"status":"ok","timestamp":1673341892897,"user_tz":-540,"elapsed":4,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"outputs":[],"source":["emotions_encoded.set_format(type=\"torch\", columns=[\"input_ids\", \"attention_mask\", \"label\"])"]},{"cell_type":"code","execution_count":45,"id":"49cf0fca","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":113,"referenced_widgets":["101a4116f12b44f6b426fc2814944eb8","9edbf9a8ba5d4142a0a12e5ea696da5c","8af71848005147cfaedd0c9ec9d4fd49","44dbd17197c64b538c63a610f7f31617","c7fbfa047d884faeb5969ae896515fc1","84928d15dbe2497baa439cb5721b83a1","ba72138f0e604758b4490c754875af78","b0e164b8f84946f88721e0c0069120a1","6e54fca8c14542cabb8b8a4b33e2dbf8","0bf2839bc8d64d2e94ad85881c74bf92","6ef1bc813fcd44e88a28492317397f9a","ec33154d5df8415098870a8cfa336916","b1611173b99e4e7e887289ec11b22549","b2b36893a8404cbeb820029a11f026c1","1026b11d38b64ec88111620d4e6496b5","a40d5fc95a36471d90292263ecbf3a9a","1f92f00548c1492bb9d5fe9a827c1465","b8fc14d3ad2e493cab95946f99eaa22d","8674806cef2647afa397d1a1a67aeb9c","1afb862c628b422788c23230a7c33263","456d3d915eab4f77b0bf0f2e0326d818","92f5f4755e724e12a59fe33e372e84e4","2fd74fded781498f86d9b097b7bebd2d","b3f0a364d8db417e95971d9bc93cd894","ba119c289d864b8ab108e9cf52a49820","01aa5eadc6a946528e32244d30383ed7","c51fa6e6e9864a7bb0be5bfb9f71c637","1fd5b81af51d4b30b17f630586339560","f0cc4fc15d62434499f1e0fefe2f03b3","3d10c62f029449bcbc574169ac502748","ecb19ac1b1664734a661aa34c037e9b8","73c4003f63bc4da1bffd26ba93218857","e869dea153bf4883ba3e883359e4ba99"]},"id":"49cf0fca","executionInfo":{"status":"ok","timestamp":1673341936842,"user_tz":-540,"elapsed":43949,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"ad796a8e-2d7c-4be6-8df2-03eae34e0955"},"outputs":[{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/16 [00:00, ?ba/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"101a4116f12b44f6b426fc2814944eb8"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/2 [00:00, ?ba/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"ec33154d5df8415098870a8cfa336916"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/2 [00:00, ?ba/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"2fd74fded781498f86d9b097b7bebd2d"}},"metadata":{}}],"source":["# 모든 분할에 대해 은닉 상태를 한 번에 추출\n","emotions_hidden = emotions_encoded.map(extract_hidden_states, batched=True)"]},{"cell_type":"code","source":["emotions_hidden[\"train\"].column_names"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"A9HpReiy88_e","executionInfo":{"status":"ok","timestamp":1673341980649,"user_tz":-540,"elapsed":6,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"42edc709-8ce1-4ded-a946-304a06750a34"},"id":"A9HpReiy88_e","execution_count":46,"outputs":[{"output_type":"execute_result","data":{"text/plain":["['text', 'label', 'input_ids', 'attention_mask', 'hidden_state']"]},"metadata":{},"execution_count":46}]},{"cell_type":"markdown","source":["## 특성 행렬 만들기\n","전처리된 데이터셋에 분류 모델을 훈련하는 데 필요한 모든 정보가 담김 \n","은닉 상태를 입력 특성으로 사용하고 레이블을 타깃으로 사용"],"metadata":{"id":"pIOakwuJ9K3v"},"id":"pIOakwuJ9K3v"},{"cell_type":"code","source":["import numpy as np\n","\n","X_train = np.array(emotions_hidden[\"train\"][\"hidden_state\"])\n","X_valid = np.array(emotions_hidden[\"validation\"][\"hidden_state\"])\n","Y_train = np.array(emotions_hidden[\"train\"][\"label\"])\n","Y_valid = np.array(emotions_hidden[\"validation\"][\"label\"])\n","\n","X_train.shape, X_valid.shape"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"fmVDUYhH9gWa","executionInfo":{"status":"ok","timestamp":1673342197640,"user_tz":-540,"elapsed":7,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"e2af6fb0-be6c-4965-f794-201abf2e5bc7"},"id":"fmVDUYhH9gWa","execution_count":47,"outputs":[{"output_type":"execute_result","data":{"text/plain":["((16000, 768), (2000, 768))"]},"metadata":{},"execution_count":47}]},{"cell_type":"markdown","source":["## 훈련 세트 시각화\n","은닉 상태로 모델을 훈련하기 전에 분류하려는 감정에 대한 유용한 표현을 제공하는지 확인이 필요 \n","\n","768차원의 은닉 상태를 시각화하기 어렵기에 UMAP 알고리즘을 사용해 이 벡터를 2D로 투영 \n","UMAP은 특성이 [0,1] 범위에 놓일 때 잘 작동. 사이킷런의 MinMaxScaler를 적용한 후 umap-learn 라이브러리의 UMAP 구현으로 은닉 상태의 차원을 축소"],"metadata":{"id":"dWkueZ3m-FFb"},"id":"dWkueZ3m-FFb"},{"cell_type":"code","source":["!pip uninstall umap"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"bYDxENRtADzq","executionInfo":{"status":"ok","timestamp":1673342785584,"user_tz":-540,"elapsed":12206,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"4f259645-7939-440c-9ab1-efcc711e55c3"},"id":"bYDxENRtADzq","execution_count":53,"outputs":[{"output_type":"stream","name":"stdout","text":["Found existing installation: umap 0.1.1\n","Uninstalling umap-0.1.1:\n"," Would remove:\n"," /usr/local/lib/python3.8/dist-packages/umap-0.1.1.dist-info/*\n"," /usr/local/lib/python3.8/dist-packages/umap/*\n"," Would not remove (might be manually added):\n"," /usr/local/lib/python3.8/dist-packages/umap/aligned_umap.py\n"," /usr/local/lib/python3.8/dist-packages/umap/distances.py\n"," /usr/local/lib/python3.8/dist-packages/umap/layouts.py\n"," /usr/local/lib/python3.8/dist-packages/umap/parametric_umap.py\n"," /usr/local/lib/python3.8/dist-packages/umap/plot.py\n"," /usr/local/lib/python3.8/dist-packages/umap/sparse.py\n"," /usr/local/lib/python3.8/dist-packages/umap/spectral.py\n"," /usr/local/lib/python3.8/dist-packages/umap/umap_.py\n"," /usr/local/lib/python3.8/dist-packages/umap/utils.py\n"," /usr/local/lib/python3.8/dist-packages/umap/validation.py\n","Proceed (Y/n)? Y\n"," Successfully uninstalled umap-0.1.1\n"]}]},{"cell_type":"code","source":["!pip install umap-learn"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"xybNOFKY_mcB","executionInfo":{"status":"ok","timestamp":1673342794193,"user_tz":-540,"elapsed":4302,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"8ea84a9f-5555-4bf6-f408-d6c810321e0f"},"id":"xybNOFKY_mcB","execution_count":54,"outputs":[{"output_type":"stream","name":"stdout","text":["Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n","Requirement already satisfied: umap-learn in /usr/local/lib/python3.8/dist-packages (0.5.3)\n","Requirement already satisfied: scikit-learn>=0.22 in /usr/local/lib/python3.8/dist-packages (from umap-learn) (1.0.2)\n","Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.8/dist-packages (from umap-learn) (1.21.6)\n","Requirement already satisfied: numba>=0.49 in /usr/local/lib/python3.8/dist-packages (from umap-learn) (0.56.4)\n","Requirement already satisfied: tqdm in /usr/local/lib/python3.8/dist-packages (from umap-learn) (4.64.1)\n","Requirement already satisfied: scipy>=1.0 in /usr/local/lib/python3.8/dist-packages (from umap-learn) (1.7.3)\n","Requirement already satisfied: pynndescent>=0.5 in /usr/local/lib/python3.8/dist-packages (from umap-learn) (0.5.8)\n","Requirement already satisfied: setuptools in /usr/local/lib/python3.8/dist-packages (from numba>=0.49->umap-learn) (57.4.0)\n","Requirement already satisfied: importlib-metadata in /usr/local/lib/python3.8/dist-packages (from numba>=0.49->umap-learn) (5.2.0)\n","Requirement already satisfied: llvmlite<0.40,>=0.39.0dev0 in /usr/local/lib/python3.8/dist-packages (from numba>=0.49->umap-learn) (0.39.1)\n","Requirement already satisfied: joblib>=0.11 in /usr/local/lib/python3.8/dist-packages (from pynndescent>=0.5->umap-learn) (1.2.0)\n","Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.8/dist-packages (from scikit-learn>=0.22->umap-learn) (3.1.0)\n","Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.8/dist-packages (from importlib-metadata->numba>=0.49->umap-learn) (3.11.0)\n"]}]},{"cell_type":"code","source":["# from umap import UMAP\n","import umap.umap_ as umap\n","from sklearn.preprocessing import MinMaxScaler\n","\n","# 특성 스케일을 [0,1] 범위로 조정\n","X_scaled = MinMaxScaler().fit_transform(X_train)\n","# UMAP 객체를 생성하고 훈련\n","mapper = umap.UMAP(n_components=2, metric=\"cosine\").fit(X_scaled)\n","\n","# 2D 임베딩의 데이터프레임을 생성\n","df_emb = pd.DataFrame(mapper.embedding_, columns=[\"X\", \"Y\"])\n","df_emb[\"label\"] = Y_train\n","df_emb.head()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":206},"id":"Sx0BapUg-xoq","executionInfo":{"status":"ok","timestamp":1673343223945,"user_tz":-540,"elapsed":42777,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"56c1711b-2f35-4d77-9bb2-51bc2fa92f77"},"id":"Sx0BapUg-xoq","execution_count":61,"outputs":[{"output_type":"execute_result","data":{"text/plain":[" X Y label\n","0 4.256140 7.099303 0\n","1 -2.679181 6.564047 0\n","2 5.314543 3.535637 3\n","3 -2.102647 4.541106 2\n","4 -3.089052 4.619032 3"],"text/html":["\n","
\n","
\n","
\n","\n","
\n"," \n","
\n","
\n","
X
\n","
Y
\n","
label
\n","
\n"," \n"," \n","
\n","
0
\n","
4.256140
\n","
7.099303
\n","
0
\n","
\n","
\n","
1
\n","
-2.679181
\n","
6.564047
\n","
0
\n","
\n","
\n","
2
\n","
5.314543
\n","
3.535637
\n","
3
\n","
\n","
\n","
3
\n","
-2.102647
\n","
4.541106
\n","
2
\n","
\n","
\n","
4
\n","
-3.089052
\n","
4.619032
\n","
3
\n","
\n"," \n","
\n","
\n"," \n"," \n"," \n","\n"," \n","
\n","
\n"," "]},"metadata":{},"execution_count":61}]},{"cell_type":"markdown","source":["출력 결과는 훈련 샘플과 개수가 동일한 배열. 하지만 특성은 768개가 아닌 겨우 2개"],"metadata":{"id":"HeXYNDn7B99N"},"id":"HeXYNDn7B99N"},{"cell_type":"code","source":["fig, axes = plt.subplots(2, 3, figsize=(7,5))\n","axes = axes.flatten()\n","cmaps = [\"Greys\", \"Blues\", \"Oranges\", \"Reds\", \"Purples\", \"Greens\"]\n","labels = emotions[\"train\"].features[\"label\"].names\n","\n","for i, (label, cmap) in enumerate(zip(labels, cmaps)):\n"," df_emb_sub = df_emb.query(f\"label == {i}\")\n"," axes[i].hexbin(df_emb_sub[\"X\"], df_emb_sub[\"Y\"], cmap=cmap, gridsize=20, linewidths=(0,))\n"," axes[i].set_title(label)\n"," axes[i].set_xticks([]), axes[i].set_yticks([])\n","\n","plt.tight_layout()\n","plt.show()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":369},"id":"Pj8-Ath4CD3i","executionInfo":{"status":"ok","timestamp":1673343641150,"user_tz":-540,"elapsed":1097,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"d71499db-64a3-449a-e912-fcc63aec0459"},"id":"Pj8-Ath4CD3i","execution_count":63,"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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\n"},"metadata":{}}]},{"cell_type":"markdown","source":["### 간단한 분류 모델 훈련\n","은닉 상태가 감정별로 조금씩 다르지만 일부 감정 사이에는 명확한 경계가 없기도 함 \n","이 은닉 상태를 사용해 사이킷런의 로지스틱 회귀(logistic regression) 모델을 훈련"],"metadata":{"id":"G9UX5LkODxbZ"},"id":"G9UX5LkODxbZ"},{"cell_type":"code","source":["from sklearn.linear_model import LogisticRegression\n","\n","# 수렴을 보장하기 위해 'max_iter'를 증가\n","lr_clf = LogisticRegression(max_iter=3000)\n","lr_clf.fit(X_train, Y_train)\n","lr_clf.score(X_valid, Y_valid)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"7wRPfAEDD8Kn","executionInfo":{"status":"ok","timestamp":1673344183711,"user_tz":-540,"elapsed":224801,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"18062b77-087e-4fce-d6c0-95e1c0b063dd"},"id":"7wRPfAEDD8Kn","execution_count":64,"outputs":[{"output_type":"execute_result","data":{"text/plain":["0.633"]},"metadata":{},"execution_count":64}]},{"cell_type":"markdown","source":["오차 행렬(confusion matrix)\n","\n"," \n","오차 행렬은 진짜 레이블과 예측 레이블의 관계를 보여줌"],"metadata":{"id":"Bm3KZUPZFtj5"},"id":"Bm3KZUPZFtj5"},{"cell_type":"code","source":["from sklearn.metrics import ConfusionMatrixDisplay, confusion_matrix\n","\n","def plot_confusion_matrix(y_preds, y_true, labels):\n"," cm = confusion_matrix(y_true, y_preds, normalize=\"true\")\n"," fig, ax = plt.subplots(figsize=(6,6))\n"," disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=labels)\n"," disp.plot(cmap=\"Blues\", values_format=\".2f\", ax=ax, colorbar=False)\n"," plt.title(\"Normalized confusion matrix\")\n"," plt.show()\n","\n","y_preds = lr_clf.predict(X_valid)\n","plot_confusion_matrix(y_preds, Y_valid, labels)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":404},"id":"8ykaFc2WFq_3","executionInfo":{"status":"ok","timestamp":1673344451707,"user_tz":-540,"elapsed":650,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"cfa77d1c-4e0f-4902-b5a8-3e60a17e3460"},"id":"8ykaFc2WFq_3","execution_count":65,"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"cell_type":"markdown","source":["- anger, fear는 sadness와 가장 많이 혼동\n","- love, surprise는 joy로 많이 오인"],"metadata":{"id":"uMQIrPVEGw_0"},"id":"uMQIrPVEGw_0"},{"cell_type":"markdown","source":["## 2. 텍스트 분류 모델 훈련 - 미세 튜닝\n","\n","트랜스포머를 엔드-투-엔드로 미세 튜닝하는 방법 \n","미세 튜닝 방식에서는 은닉 상태를 고정된 특성으로 사용하지 않고 전체 모델을 훈련 (분류 헤드는 미분 가능 해야 함)\n"],"metadata":{"id":"5KZ4dG9dHIVB"},"id":"5KZ4dG9dHIVB"},{"cell_type":"markdown","source":["분류 모델에 입력으로 사용하는 은닉 상태를 훈련하면 분류 작업에 적합하지 않은 데이터를 다룬다는 문제를 회피 할 수 있음"],"metadata":{"id":"0wmNDecZHroJ"},"id":"0wmNDecZHroJ"},{"cell_type":"markdown","source":["### 사전 훈련된 모델 로드\n","\n","특성 기반 방식에서 사용한 것과 같은 사전 훈련된 DistilBERT 모델을 사용 \n","\n","But, AutoModel 대신 AutoModelForSequenceClassification을 사용, 이 모델은 사전 훈련된 모델 출력위에 베이스 모델과 함께 쉽게 훈련할 수 있는 분류 헤드가 있음 \n","\n","분류 헤드의 출력 크기를 설정하기 위해 모델이 예측할 레이블 개수(여기서는 6)을 지정"],"metadata":{"id":"N642fZjSH0YQ"},"id":"N642fZjSH0YQ"},{"cell_type":"code","source":["from transformers import AutoModelForSequenceClassification\n","\n","num_labels = 6\n","model = (AutoModelForSequenceClassification.from_pretrained(model_ckpt, num_labels=num_labels).to(device))"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"1qo-aIBbG9jc","executionInfo":{"status":"ok","timestamp":1673345010467,"user_tz":-540,"elapsed":3708,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"abbffc8d-f3b7-4f04-9e27-bbb9d1c1358d"},"id":"1qo-aIBbG9jc","execution_count":66,"outputs":[{"output_type":"stream","name":"stderr","text":["Some weights of the model checkpoint at distilbert-base-uncased were not used when initializing DistilBertForSequenceClassification: ['vocab_layer_norm.bias', 'vocab_transform.bias', 'vocab_layer_norm.weight', 'vocab_projector.weight', 'vocab_projector.bias', 'vocab_transform.weight']\n","- This IS expected if you are initializing DistilBertForSequenceClassification from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n","- This IS NOT expected if you are initializing DistilBertForSequenceClassification from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n","Some weights of DistilBertForSequenceClassification were not initialized from the model checkpoint at distilbert-base-uncased and are newly initialized: ['pre_classifier.bias', 'pre_classifier.weight', 'classifier.bias', 'classifier.weight']\n","You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n"]}]},{"cell_type":"markdown","source":["모델 일부가 랜덤하게 초기화된다는 경고를 보냄. (분류 헤드가 아직 훈련되지 않아 발생)"],"metadata":{"id":"R_Ik1FnzIy1c"},"id":"R_Ik1FnzIy1c"},{"cell_type":"markdown","source":["#### 성공 지표 정의\n","\n","미세 튜닝 과정에서 모델 성능을 평가할 때 사용할 측정 지표를 정의 \n","훈련하는 동안 성능을 모니터링하기 위해 Trainer에 사용할 compute_metrics() 함수를 정의"],"metadata":{"id":"YQ1rmWVjI5p4"},"id":"YQ1rmWVjI5p4"},{"cell_type":"code","source":["from sklearn.metrics import accuracy_score, f1_score\n","\n","def compute_metrics(pred):\n"," labels = pred.label_ids\n"," preds = pred.predictions.argmax(-1)\n"," f1 = f1_score(labels, preds, average=\"weighted\")\n"," acc = accuracy_score(labels, preds)\n"," return {\"accuracy\":acc, \"f1\":f1}"],"metadata":{"id":"lYfMGf2gJQNJ","executionInfo":{"status":"ok","timestamp":1673345269650,"user_tz":-540,"elapsed":923,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"id":"lYfMGf2gJQNJ","execution_count":67,"outputs":[]},{"cell_type":"code","source":["from transformers import Trainer, TrainingArguments\n","\n","batch_size=64\n","logging_steps = len(emotions_encoded[\"train\"]) // batch_size\n","model_name = f\"{model_ckpt}-finetuned-emotion\"\n","training_args = TrainingArguments(output_dir=model_name,\n"," num_train_epochs=2,\n"," learning_rate=2e-5,\n"," per_device_train_batch_size=batch_size,\n"," per_device_eval_batch_size=batch_size,\n"," weight_decay=0.01,\n"," evaluation_strategy=\"epoch\",\n"," disable_tqdm=False,\n"," logging_steps=logging_steps,\n"," push_to_hub=False,\n"," save_strategy=\"epoch\",\n"," load_best_model_at_end=True,\n"," log_level=\"error\")"],"metadata":{"id":"TzQOKwCXJ9M0","executionInfo":{"status":"ok","timestamp":1673345650008,"user_tz":-540,"elapsed":459,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"id":"TzQOKwCXJ9M0","execution_count":69,"outputs":[]},{"cell_type":"code","source":["from transformers import Trainer\n","\n","trainer = Trainer(model=model, args=training_args, compute_metrics=compute_metrics, train_dataset=emotions_encoded[\"train\"], eval_dataset=emotions_encoded[\"validation\"], tokenizer=tokenizer)\n","trainer.train()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":228},"id":"zX24iuGHLF0u","executionInfo":{"status":"ok","timestamp":1673345986689,"user_tz":-540,"elapsed":237842,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"d77ec0a6-0847-4e4b-bef8-41044907f25d"},"id":"zX24iuGHLF0u","execution_count":70,"outputs":[{"output_type":"stream","name":"stderr","text":["/usr/local/lib/python3.8/dist-packages/transformers/optimization.py:306: FutureWarning: This implementation of AdamW is deprecated and will be removed in a future version. Use the PyTorch implementation torch.optim.AdamW instead, or set `no_deprecation_warning=True` to disable this warning\n"," warnings.warn(\n"]},{"output_type":"display_data","data":{"text/plain":[""],"text/html":["\n","
"],"image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"cell_type":"markdown","source":["#### 오류 분석\n","\n","모델의 손실 기준으로 검증 샘플을 정렬 \n","정방향 패스의 결과와 레이블을 사용하면 손실은 자동으로 계산 가능."],"metadata":{"id":"HD_r8G7GNKu8"},"id":"HD_r8G7GNKu8"},{"cell_type":"code","source":["# 손실과 예측 레이블을 반환\n","from torch.nn.functional import cross_entropy\n","\n","def forward_pass_with_label(batch):\n"," # 모든 입력 텐서를 모델과 같은 장치로 이동\n"," inputs = {k:v.to(device) for k,v in batch.items() if k in tokenizer.model_input_names}\n","\n"," with torch.no_grad():\n"," output = model(**inputs)\n"," pred_label = torch.argmax(output.logits, axis=-1)\n"," loss = cross_entropy(output.logits, batch[\"label\"].to(device), reduction=\"none\")\n","\n"," # 다른 데이터셋 열과 호환되도력 출력을 CPU로 옮김\n"," return {\"loss\":loss.cpu().numpy(), \"predicted_label\":pred_label.cpu().numpy()}"],"metadata":{"id":"_vElx2WqNeIE","executionInfo":{"status":"ok","timestamp":1673346476379,"user_tz":-540,"elapsed":4,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"id":"_vElx2WqNeIE","execution_count":76,"outputs":[]},{"cell_type":"markdown","source":["map 메서드로 이 함수를 적용해 모든 샘플의 손실을 구함"],"metadata":{"id":"R1pbWEwvOQls"},"id":"R1pbWEwvOQls"},{"cell_type":"code","source":["# 데이터셋을 다시 파이토치 텐서로 변환\n","emotions_encoded.set_format(\"torch\", columns=[\"input_ids\", \"attention_mask\", \"label\"])\n","\n","# 손실 값을 계산\n","emotions_encoded[\"validation\"] = emotions_encoded[\"validation\"].map(forward_pass_with_label, batched=True, batch_size=16)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":49,"referenced_widgets":["80aa883b3cf649ceb6e5b85ed5ea5509","313593925c2a4141a64864e53e122063","0b9065b551c8412f80340a506e6c685b","2c451fd1646d400d8d24adef4c5edaab","44040ea5691b408a8f206b0acc3b9ea7","838fadbc513045ce9492e00a834433af","aeb48bd095004b65b3eccd405c997500","d94d1a4d44ad4a4594f1008be77cfe51","0bdcc5fd663c45d79e31442b9abb40e5","8e0cd84d88f0431eb265ecf5114b2288","7a4511d0bb9143569319cf5ae8c7836f"]},"id":"9BUPB6pkOPJh","executionInfo":{"status":"ok","timestamp":1673346600282,"user_tz":-540,"elapsed":13943,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"4d3981b7-b2b5-44ed-be79-fabb1adf30f7"},"id":"9BUPB6pkOPJh","execution_count":77,"outputs":[{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/125 [00:00, ?ba/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"80aa883b3cf649ceb6e5b85ed5ea5509"}},"metadata":{}}]},{"cell_type":"markdown","source":["텍스트, 손실, 예측 레이블과 진짜 레이블로 DataFrame을 생성"],"metadata":{"id":"ksf6TBZOOwOr"},"id":"ksf6TBZOOwOr"},{"cell_type":"code","source":["emotions_encoded.set_format(\"pandas\")\n","cols = [\"text\", \"label\", \"predicted_label\", \"loss\"]\n","df_test = emotions_encoded[\"validation\"][:][cols]\n","df_test[\"label\"] = df_test[\"label\"].apply(label_int2str)\n","df_test[\"predicted_label\"] = (df_test[\"predicted_label\"].apply(label_int2str))"],"metadata":{"id":"qp9-oIkNO0Bo","executionInfo":{"status":"ok","timestamp":1673346776092,"user_tz":-540,"elapsed":838,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"id":"qp9-oIkNO0Bo","execution_count":78,"outputs":[]},{"cell_type":"markdown","source":["emotions_encoded를 손실 기준으로 오름차순 혹은 내림차순으로 정렬\n","\n","--> 데이터에 레이블을 부여하는 프로세스는 모두 완벽하지 않음 \n","잘못 레이블링된 샘플이 존재 할 수 있음 앞의 방식을 사용하면 이런 레이블을 빠르게 찾아 수정이 가능"],"metadata":{"id":"KWR1b4ztPZhW"},"id":"KWR1b4ztPZhW"},{"cell_type":"markdown","source":["#### 데이터셋의 특이사항\n","텍스트 데이터에서는 입력에 포함된 특수 문자나 문자열이 모델 예측에 큰 영향을 미치기도 함 \n","모델의 가장 나쁜 예측을 들여다보게 되면 이런 특성을 찾게 되고, 데이터를 정제하거나 비슷한 샘플을 추가하면 모델이 안정됨"],"metadata":{"id":"hHxQvP99P4g5"},"id":"hHxQvP99P4g5"},{"cell_type":"code","source":["df_test.sort_values(\"loss\", ascending=False).head(10)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":363},"id":"YBLpveUHQDXr","executionInfo":{"status":"ok","timestamp":1673346975822,"user_tz":-540,"elapsed":1126,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"f57ccba6-0b46-4b98-83c5-aed7b0c160a6"},"id":"YBLpveUHQDXr","execution_count":79,"outputs":[{"output_type":"execute_result","data":{"text/plain":[" text label \\\n","1963 i called myself pro life and voted for perry w... joy \n","1950 i as representative of everything thats wrong ... surprise \n","1274 i am going to several holiday parties and i ca... joy \n","1111 im lazy my characters fall into categories of ... joy \n","1509 i guess this is a memoir so it feels like that... joy \n","1870 i guess i feel betrayed because i admired him ... joy \n","1801 i feel that he was being overshadowed by the s... love \n","318 i felt ashamed of these feelings and was scare... fear \n","1500 i guess we would naturally feel a sense of lon... anger \n","882 i feel badly about reneging on my commitment t... love \n","\n"," predicted_label loss \n","1963 sadness 5.367970 \n","1950 sadness 5.284013 \n","1274 sadness 5.276999 \n","1111 fear 5.139698 \n","1509 fear 5.066939 \n","1870 sadness 5.032856 \n","1801 sadness 4.932096 \n","318 sadness 4.787760 \n","1500 sadness 4.679534 \n","882 sadness 4.383337 "],"text/html":["\n","
\n","
\n","
\n","\n","
\n"," \n","
\n","
\n","
text
\n","
label
\n","
predicted_label
\n","
loss
\n","
\n"," \n"," \n","
\n","
1963
\n","
i called myself pro life and voted for perry w...
\n","
joy
\n","
sadness
\n","
5.367970
\n","
\n","
\n","
1950
\n","
i as representative of everything thats wrong ...
\n","
surprise
\n","
sadness
\n","
5.284013
\n","
\n","
\n","
1274
\n","
i am going to several holiday parties and i ca...
\n","
joy
\n","
sadness
\n","
5.276999
\n","
\n","
\n","
1111
\n","
im lazy my characters fall into categories of ...
\n","
joy
\n","
fear
\n","
5.139698
\n","
\n","
\n","
1509
\n","
i guess this is a memoir so it feels like that...
\n","
joy
\n","
fear
\n","
5.066939
\n","
\n","
\n","
1870
\n","
i guess i feel betrayed because i admired him ...
\n","
joy
\n","
sadness
\n","
5.032856
\n","
\n","
\n","
1801
\n","
i feel that he was being overshadowed by the s...
\n","
love
\n","
sadness
\n","
4.932096
\n","
\n","
\n","
318
\n","
i felt ashamed of these feelings and was scare...
\n","
fear
\n","
sadness
\n","
4.787760
\n","
\n","
\n","
1500
\n","
i guess we would naturally feel a sense of lon...
\n","
anger
\n","
sadness
\n","
4.679534
\n","
\n","
\n","
882
\n","
i feel badly about reneging on my commitment t...
\n","
love
\n","
sadness
\n","
4.383337
\n","
\n"," \n","
\n","
\n"," \n"," \n"," \n","\n"," \n","
\n","
\n"," "]},"metadata":{},"execution_count":79}]},{"cell_type":"code","source":["df_test.sort_values(\"loss\", ascending=True).head(10)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":363},"id":"6W_Q-8VsQlQJ","executionInfo":{"status":"ok","timestamp":1673347106997,"user_tz":-540,"elapsed":1032,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"39dd8dca-4bd1-460f-9979-9aac61f53aa7"},"id":"6W_Q-8VsQlQJ","execution_count":80,"outputs":[{"output_type":"execute_result","data":{"text/plain":[" text label predicted_label \\\n","19 i had lunch with an old friend and it was nice... joy joy \n","205 i cannot wait for school to end so i can chang... joy joy \n","669 i am not feeling very joyful today its been a ... joy joy \n","604 i don t like to use the h word recklessly but ... joy joy \n","11 i was dribbling on mums coffee table looking o... joy joy \n","1513 i have also been getting back into my gym rout... joy joy \n","578 i got to christmas feeling positive about the ... joy joy \n","1320 im feeling positive but its impossible to desc... joy joy \n","329 i have had my treasury selection on the front ... joy joy \n","1263 i feel this way about blake lively joy joy \n","\n"," loss \n","19 0.015154 \n","205 0.015296 \n","669 0.015381 \n","604 0.015426 \n","11 0.015474 \n","1513 0.015520 \n","578 0.015627 \n","1320 0.015640 \n","329 0.015814 \n","1263 0.015964 "],"text/html":["\n","
\n","
\n","
\n","\n","
\n"," \n","
\n","
\n","
text
\n","
label
\n","
predicted_label
\n","
loss
\n","
\n"," \n"," \n","
\n","
19
\n","
i had lunch with an old friend and it was nice...
\n","
joy
\n","
joy
\n","
0.015154
\n","
\n","
\n","
205
\n","
i cannot wait for school to end so i can chang...
\n","
joy
\n","
joy
\n","
0.015296
\n","
\n","
\n","
669
\n","
i am not feeling very joyful today its been a ...
\n","
joy
\n","
joy
\n","
0.015381
\n","
\n","
\n","
604
\n","
i don t like to use the h word recklessly but ...
\n","
joy
\n","
joy
\n","
0.015426
\n","
\n","
\n","
11
\n","
i was dribbling on mums coffee table looking o...
\n","
joy
\n","
joy
\n","
0.015474
\n","
\n","
\n","
1513
\n","
i have also been getting back into my gym rout...
\n","
joy
\n","
joy
\n","
0.015520
\n","
\n","
\n","
578
\n","
i got to christmas feeling positive about the ...
\n","
joy
\n","
joy
\n","
0.015627
\n","
\n","
\n","
1320
\n","
im feeling positive but its impossible to desc...
\n","
joy
\n","
joy
\n","
0.015640
\n","
\n","
\n","
329
\n","
i have had my treasury selection on the front ...
\n","
joy
\n","
joy
\n","
0.015814
\n","
\n","
\n","
1263
\n","
i feel this way about blake lively
\n","
joy
\n","
joy
\n","
0.015964
\n","
\n"," \n","
\n","
\n"," \n"," \n"," \n","\n"," \n","
\n","
\n"," "]},"metadata":{},"execution_count":80}]}],"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.9.15"},"colab":{"provenance":[]},"accelerator":"GPU","gpuClass":"standard","widgets":{"application/vnd.jupyter.widget-state+json":{"15be0db60e7447b39d8a3efb0178f99d":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_6c2a216ef9454384a48332dfcd11e854","IPY_MODEL_321df68850b64edbb4bf68f3efc4666c","IPY_MODEL_2f251ea5146e42c8a10e3e1299d20ee7"],"layout":"IPY_MODEL_e6f31047df2b410d91620c2f04f8714c"}},"6c2a216ef9454384a48332dfcd11e854":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_48d26eaa385347bb8f1df071dbb3fcf5","placeholder":"","style":"IPY_MODEL_37e087967b954cf39bbed8efc00f8910","value":"Downloading builder script: 100%"}},"321df68850b64edbb4bf68f3efc4666c":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_affcdf3100514e08ae78b45fdff62bb7","max":3968,"min":0,"orientation":"horizontal","style":"IPY_MODEL_d4dbe15a78104e4080f3168d27a28f2f","value":3968}},"2f251ea5146e42c8a10e3e1299d20ee7":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_17d39ba9ceb74e4a971c9d7fe0a388e5","placeholder":"","style":"IPY_MODEL_ad9e1452c5a44231a749edefc88ec559","value":" 3.97k/3.97k [00:00<00:00, 223kB/s]"}},"e6f31047df2b410d91620c2f04f8714c":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"48d26eaa385347bb8f1df071dbb3fcf5":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"37e087967b954cf39bbed8efc00f8910":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"affcdf3100514e08ae78b45fdff62bb7":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d4dbe15a78104e4080f3168d27a28f2f":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"17d39ba9ceb74e4a971c9d7fe0a388e5":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ad9e1452c5a44231a749edefc88ec559":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"8596765b76d8475687f9a68471baa8c2":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_245cdb335127490eb54f0b211711187c","IPY_MODEL_ee552a6f31454b0eba764bed5304c447","IPY_MODEL_3ccae33d0f704dd4ab20ed71ad34629d"],"layout":"IPY_MODEL_3e85d7ab6dc9402ea32346d736445024"}},"245cdb335127490eb54f0b211711187c":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_ca67643c59934657987dbe05ff1f6a79","placeholder":"","style":"IPY_MODEL_19ce3569029c443abcd029d7b1e5434f","value":"Downloading metadata: 100%"}},"ee552a6f31454b0eba764bed5304c447":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_ec09ef01f31b4c63b70a4f8686084da9","max":3280,"min":0,"orientation":"horizontal","style":"IPY_MODEL_fff4ffa55682415d9f2964ed56978877","value":3280}},"3ccae33d0f704dd4ab20ed71ad34629d":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_67591dd5ed2b4cd4aa72809954922e4e","placeholder":"","style":"IPY_MODEL_41a7de832edd405cb11f56b9d7b5ce4b","value":" 3.28k/3.28k [00:00<00:00, 214kB/s]"}},"3e85d7ab6dc9402ea32346d736445024":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ca67643c59934657987dbe05ff1f6a79":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"19ce3569029c443abcd029d7b1e5434f":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"ec09ef01f31b4c63b70a4f8686084da9":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"fff4ffa55682415d9f2964ed56978877":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"67591dd5ed2b4cd4aa72809954922e4e":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"41a7de832edd405cb11f56b9d7b5ce4b":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"4d4e5bdc8d534162ba27f70bd5e1f082":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_16d9f032b1d14503971178f91ccd9957","IPY_MODEL_61e5561b9f374d0baf8d5f73094798fc","IPY_MODEL_1a8d91a9ac674e41a6e0bf62c5b35477"],"layout":"IPY_MODEL_a5addd4c0f114525acde2000dc504386"}},"16d9f032b1d14503971178f91ccd9957":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_bbd6396309394aebac8c614a6a93bab6","placeholder":"","style":"IPY_MODEL_8da6d9afaae94419b6580759f2760247","value":"Downloading readme: 100%"}},"61e5561b9f374d0baf8d5f73094798fc":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_c0b1272b05d94b6d803882a8067d6afb","max":8777,"min":0,"orientation":"horizontal","style":"IPY_MODEL_9c4da2a7141f4df88ffc59d3d63c694a","value":8777}},"1a8d91a9ac674e41a6e0bf62c5b35477":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_a980d9bda04444ed94d1519d7d628a49","placeholder":"","style":"IPY_MODEL_f4a2e61b61d645629758014940686e07","value":" 8.78k/8.78k [00:00<00:00, 601kB/s]"}},"a5addd4c0f114525acde2000dc504386":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"bbd6396309394aebac8c614a6a93bab6":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"8da6d9afaae94419b6580759f2760247":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"c0b1272b05d94b6d803882a8067d6afb":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"9c4da2a7141f4df88ffc59d3d63c694a":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"a980d9bda04444ed94d1519d7d628a49":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"f4a2e61b61d645629758014940686e07":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"204278e03cfa4697804abf20ff225813":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_1a82751128d443f4ac5b5303c1b73153","IPY_MODEL_6c8c86abf14d44c5b4efdb368da1a513","IPY_MODEL_bd9de3f5b9574ac3bf3a45d05196e734"],"layout":"IPY_MODEL_e9c04430c58b45518f4e663d4732ebbe"}},"1a82751128d443f4ac5b5303c1b73153":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_740a2671e40842f79f715ba2d258440b","placeholder":"","style":"IPY_MODEL_bc4307eb644e4a6ebfaa308ec79b5911","value":"Downloading data files: 100%"}},"6c8c86abf14d44c5b4efdb368da1a513":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_1f7ab1db7a5c43a386c4097d8469d4a2","max":3,"min":0,"orientation":"horizontal","style":"IPY_MODEL_e3e4baf588234e2a80af2e8e9858ed5f","value":3}},"bd9de3f5b9574ac3bf3a45d05196e734":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_31985c31745a4dfebf496417e9b46f3a","placeholder":"","style":"IPY_MODEL_d0e5f1132e754fe59287c20f4b94f96b","value":" 3/3 [00:05<00:00, 1.88s/it]"}},"e9c04430c58b45518f4e663d4732ebbe":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"740a2671e40842f79f715ba2d258440b":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"bc4307eb644e4a6ebfaa308ec79b5911":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"1f7ab1db7a5c43a386c4097d8469d4a2":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e3e4baf588234e2a80af2e8e9858ed5f":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"31985c31745a4dfebf496417e9b46f3a":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d0e5f1132e754fe59287c20f4b94f96b":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"7c2a5fe9cff34e31ac794deb1e788d8d":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_acb980cf775e44299b861e54a2eff750","IPY_MODEL_62c0ff2b19c84cdfad5a83ff8720983f","IPY_MODEL_7303d71c059d4066942330e3e70bede0"],"layout":"IPY_MODEL_ac5e2af54b694df5983d1418332e7636"}},"acb980cf775e44299b861e54a2eff750":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_d4a4259ce3c14993af19a12affd34eb8","placeholder":"","style":"IPY_MODEL_6f2500756b6f42c391298eeaed5f8854","value":"Downloading data: 100%"}},"62c0ff2b19c84cdfad5a83ff8720983f":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_c98890a867614a26920d4bb067bee304","max":591930,"min":0,"orientation":"horizontal","style":"IPY_MODEL_85754c374f0d43e0bad78444da647c61","value":591930}},"7303d71c059d4066942330e3e70bede0":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_fcca2b9f79e0446f9e2f91e0270e9b4b","placeholder":"","style":"IPY_MODEL_dd50d5fb200746ccaecb690921ec2c42","value":" 592k/592k [00:00<00:00, 18.3MB/s]"}},"ac5e2af54b694df5983d1418332e7636":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d4a4259ce3c14993af19a12affd34eb8":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6f2500756b6f42c391298eeaed5f8854":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"c98890a867614a26920d4bb067bee304":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"85754c374f0d43e0bad78444da647c61":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"fcca2b9f79e0446f9e2f91e0270e9b4b":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"dd50d5fb200746ccaecb690921ec2c42":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"7bfe63d5a7c54b4ea7bc6221105d0cbb":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_e6d52c04d9644613b040bf53957eb46f","IPY_MODEL_97c67c9ea7d9422581abe4a21e091b4b","IPY_MODEL_7fcb248425894c77bef4326f479c1926"],"layout":"IPY_MODEL_36258d1c281a4d2eb26f92513288726d"}},"e6d52c04d9644613b040bf53957eb46f":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_c0fa09c25d334099899a963c3bc36c00","placeholder":"","style":"IPY_MODEL_2da35527796b47eb9ab3cb1cbcaccaf8","value":"Downloading data: 100%"}},"97c67c9ea7d9422581abe4a21e091b4b":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_3820bb7924a14e27b2b23d83f63d6606","max":74018,"min":0,"orientation":"horizontal","style":"IPY_MODEL_ca8c43945b2a4ec391c00c7b10b48504","value":74018}},"7fcb248425894c77bef4326f479c1926":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_1abe53ac1c564bb58c8b7c06ff097d11","placeholder":"","style":"IPY_MODEL_b7828189ea0c4d7792da50b67e748efd","value":" 74.0k/74.0k [00:00<00:00, 3.75MB/s]"}},"36258d1c281a4d2eb26f92513288726d":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"c0fa09c25d334099899a963c3bc36c00":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"2da35527796b47eb9ab3cb1cbcaccaf8":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"3820bb7924a14e27b2b23d83f63d6606":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ca8c43945b2a4ec391c00c7b10b48504":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"1abe53ac1c564bb58c8b7c06ff097d11":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b7828189ea0c4d7792da50b67e748efd":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"bed71be988084af68c0628bcbcfe63f6":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_17c3146d7a6449f4ad08ea1d3052add1","IPY_MODEL_66ef552e0f0e4591bb39fb6f0fc034d6","IPY_MODEL_5df6a4f46d82455488419dd8e7df3470"],"layout":"IPY_MODEL_07a62cdc075c4e56a4e68189564ac136"}},"17c3146d7a6449f4ad08ea1d3052add1":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_c5d0ec37d3cd40558754aa9480eb2a6b","placeholder":"","style":"IPY_MODEL_6084c39bce3c4b5ab13d7586c4431a3c","value":"Downloading data: 100%"}},"66ef552e0f0e4591bb39fb6f0fc034d6":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_a71d88aedade49038831bc24d2281e3a","max":74935,"min":0,"orientation":"horizontal","style":"IPY_MODEL_562cf26a240949c787ff51dc1f3ef4a2","value":74935}},"5df6a4f46d82455488419dd8e7df3470":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_df95194ca38e43fb83250fa86d096613","placeholder":"","style":"IPY_MODEL_bf1dc66bb9164730b4fe171c24604125","value":" 74.9k/74.9k [00:00<00:00, 3.56MB/s]"}},"07a62cdc075c4e56a4e68189564ac136":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"c5d0ec37d3cd40558754aa9480eb2a6b":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6084c39bce3c4b5ab13d7586c4431a3c":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"a71d88aedade49038831bc24d2281e3a":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"562cf26a240949c787ff51dc1f3ef4a2":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"df95194ca38e43fb83250fa86d096613":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"bf1dc66bb9164730b4fe171c24604125":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"c545f017ed8e4a3e8add6a23e7e37314":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_418167aad1554edea1dc5d1d6b879ccd","IPY_MODEL_812d351083b24a9db1f535b1c6ef5e61","IPY_MODEL_61cfdd6ec9664df98ad6fa2a202318f8"],"layout":"IPY_MODEL_ec5517f772c648f8839125acc7163bd2"}},"418167aad1554edea1dc5d1d6b879ccd":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_bf2332fb0c2c440b9b71f00818936a53","placeholder":"","style":"IPY_MODEL_f12f2f547a7e417db26df14ef00c6c80","value":"Extracting data files: 100%"}},"812d351083b24a9db1f535b1c6ef5e61":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_79be6dfa4f8145d09f072ed6f5cb4d3a","max":3,"min":0,"orientation":"horizontal","style":"IPY_MODEL_6cfca50926a04bf0b7455de53ed39e07","value":3}},"61cfdd6ec9664df98ad6fa2a202318f8":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_ede97313536a4a1882e0363a28d771fc","placeholder":"","style":"IPY_MODEL_77b2d4741f58419c87725f88409fa34d","value":" 3/3 [00:00<00:00, 67.08it/s]"}},"ec5517f772c648f8839125acc7163bd2":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"bf2332fb0c2c440b9b71f00818936a53":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"f12f2f547a7e417db26df14ef00c6c80":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"79be6dfa4f8145d09f072ed6f5cb4d3a":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6cfca50926a04bf0b7455de53ed39e07":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"ede97313536a4a1882e0363a28d771fc":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"77b2d4741f58419c87725f88409fa34d":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"774d58af423e4d559b55fb7ca867b73e":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_2249c0ee4a6c4a12b5c1b004ef0f7bea","IPY_MODEL_8c6a709ec66f4bf89d7dc1d99ebfcd85","IPY_MODEL_b203c5ac560b4c0b91da8d3936c9701e"],"layout":"IPY_MODEL_a56c46fb64984a99acf33eaf1d0749e2"}},"2249c0ee4a6c4a12b5c1b004ef0f7bea":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_654e5a1bf15944139a8af596fea472ad","placeholder":"","style":"IPY_MODEL_57f07b09eaff4e2cbb2baf0f55aa6f56","value":"Generating train split: 95%"}},"8c6a709ec66f4bf89d7dc1d99ebfcd85":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"","description":"","description_tooltip":null,"layout":"IPY_MODEL_2f78b83bf6ab4e309657919870f72914","max":16000,"min":0,"orientation":"horizontal","style":"IPY_MODEL_7619571658cd4fa2841a04d78dc1fbe0","value":16000}},"b203c5ac560b4c0b91da8d3936c9701e":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_cc4c766ab3cd4d31a6a1c2bd62fd1ac1","placeholder":"","style":"IPY_MODEL_d546cdab698241b593f2a4668cbbe718","value":" 15201/16000 [00:00<00:00, 38204.96 examples/s]"}},"a56c46fb64984a99acf33eaf1d0749e2":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":"hidden","width":null}},"654e5a1bf15944139a8af596fea472ad":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"57f07b09eaff4e2cbb2baf0f55aa6f56":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"2f78b83bf6ab4e309657919870f72914":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"7619571658cd4fa2841a04d78dc1fbe0":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"cc4c766ab3cd4d31a6a1c2bd62fd1ac1":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d546cdab698241b593f2a4668cbbe718":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"1dcfb16f3b99497fab648fbc508622af":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_0edf7b00d74e4aa08a2a3dde6f9377d9","IPY_MODEL_68663f8ab1464294ad24fe1550746272","IPY_MODEL_62dec3a2e87744a8accf7e17bdfc4fe1"],"layout":"IPY_MODEL_7e386e08bdd34471b5be7c5b578e3fe8"}},"0edf7b00d74e4aa08a2a3dde6f9377d9":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_e0da041ea0a34884a3ac413a0632c05a","placeholder":"","style":"IPY_MODEL_dc452bd507d04875922b12d79a12be8c","value":"Generating validation split: 0%"}},"68663f8ab1464294ad24fe1550746272":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"","description":"","description_tooltip":null,"layout":"IPY_MODEL_cdd8485752434ebabbc37d1e4f268e5d","max":2000,"min":0,"orientation":"horizontal","style":"IPY_MODEL_131e10a0bb814925b81350ee521d10ec","value":2000}},"62dec3a2e87744a8accf7e17bdfc4fe1":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_9d0a2f1b16554acc8ee8fa798b3d80d5","placeholder":"","style":"IPY_MODEL_4e22f63e5af146279cdafa6e14fa0235","value":" 0/2000 [00:00<?, ? examples/s]"}},"7e386e08bdd34471b5be7c5b578e3fe8":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":"hidden","width":null}},"e0da041ea0a34884a3ac413a0632c05a":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"dc452bd507d04875922b12d79a12be8c":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"cdd8485752434ebabbc37d1e4f268e5d":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"131e10a0bb814925b81350ee521d10ec":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"9d0a2f1b16554acc8ee8fa798b3d80d5":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"4e22f63e5af146279cdafa6e14fa0235":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"3ac8646d66e9466cb19ca475d5c35319":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_4e20703456eb4983bfd220202193f770","IPY_MODEL_ff1ff119aa864603bc9e179ad039db1c","IPY_MODEL_79c0f1e2dedf459fad9d99c9da23921f"],"layout":"IPY_MODEL_f4536072a0f245ce955bf17c4e69fff7"}},"4e20703456eb4983bfd220202193f770":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_62e068731b004692b62bfbe3d6a7d4bd","placeholder":"","style":"IPY_MODEL_21401b5db07742ccbd904349816513b8","value":"Generating test split: 0%"}},"ff1ff119aa864603bc9e179ad039db1c":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"","description":"","description_tooltip":null,"layout":"IPY_MODEL_12d18e67c09045aa95cb9e59a9b6e2a8","max":2000,"min":0,"orientation":"horizontal","style":"IPY_MODEL_fca1857b9a8f48d28b74fc06d6986bd5","value":2000}},"79c0f1e2dedf459fad9d99c9da23921f":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_826dafb23b96401b854502fd7faff689","placeholder":"","style":"IPY_MODEL_0f6f60d107854832ab63a53fbfbd079c","value":" 0/2000 [00:00<?, ? examples/s]"}},"f4536072a0f245ce955bf17c4e69fff7":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":"hidden","width":null}},"62e068731b004692b62bfbe3d6a7d4bd":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"21401b5db07742ccbd904349816513b8":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"12d18e67c09045aa95cb9e59a9b6e2a8":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"fca1857b9a8f48d28b74fc06d6986bd5":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"826dafb23b96401b854502fd7faff689":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"0f6f60d107854832ab63a53fbfbd079c":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"d7190fe0ffbe44ed88183863b01ae154":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_37f0d2cf136240c9a05d09530134731b","IPY_MODEL_4b00f1b6b9a44812ace3d76be6eddc93","IPY_MODEL_43a0ec11689f4195871427b3518a564d"],"layout":"IPY_MODEL_a67d6cc425c94c4a8a114da132392197"}},"37f0d2cf136240c9a05d09530134731b":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_46df938913904dff8d9d6ac483529a5c","placeholder":"","style":"IPY_MODEL_140e7085dabc494d89eeeeb30d5f8a19","value":"100%"}},"4b00f1b6b9a44812ace3d76be6eddc93":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_a2f713bb502644fd93663239d7af8c4d","max":3,"min":0,"orientation":"horizontal","style":"IPY_MODEL_aa0bb486843e4663952242eed3ba1261","value":3}},"43a0ec11689f4195871427b3518a564d":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_1bb5c0a141984ad39f5fb3ce2be79552","placeholder":"","style":"IPY_MODEL_f38775a718884ecdbaf317b2369550da","value":" 3/3 [00:00<00:00, 134.39it/s]"}},"a67d6cc425c94c4a8a114da132392197":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"46df938913904dff8d9d6ac483529a5c":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"140e7085dabc494d89eeeeb30d5f8a19":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"a2f713bb502644fd93663239d7af8c4d":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"aa0bb486843e4663952242eed3ba1261":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"1bb5c0a141984ad39f5fb3ce2be79552":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"f38775a718884ecdbaf317b2369550da":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"2cbf56d11bd84bd39a2e8f00be50ab98":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_fa29a3affda84dc38e53a7ec02e4a1f2","IPY_MODEL_1886290ec37f4f7eb7dced6d494cbe6a","IPY_MODEL_b37bdca77d064cf2b7ef2bf21edc554b"],"layout":"IPY_MODEL_14709700a96448cda2f036f9886463f9"}},"fa29a3affda84dc38e53a7ec02e4a1f2":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_e9230e8b794f433e9ed48f62a244c1f3","placeholder":"","style":"IPY_MODEL_16ab6bdfe98a44dcb15fb374ffdd7dcb","value":"Downloading: 100%"}},"1886290ec37f4f7eb7dced6d494cbe6a":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_f9ac65f7c12b4c70b1481fd0052ebcab","max":28,"min":0,"orientation":"horizontal","style":"IPY_MODEL_a49d46601b5d4395bd61aa89b3c4f261","value":28}},"b37bdca77d064cf2b7ef2bf21edc554b":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_fa363e3b514f47909eb1caf3bda7d4ac","placeholder":"","style":"IPY_MODEL_4c2ddc339f2948cda9331332583f71ef","value":" 28.0/28.0 [00:00<00:00, 1.77kB/s]"}},"14709700a96448cda2f036f9886463f9":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e9230e8b794f433e9ed48f62a244c1f3":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"16ab6bdfe98a44dcb15fb374ffdd7dcb":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"f9ac65f7c12b4c70b1481fd0052ebcab":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"a49d46601b5d4395bd61aa89b3c4f261":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"fa363e3b514f47909eb1caf3bda7d4ac":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"4c2ddc339f2948cda9331332583f71ef":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"815b635b8e2d429ab30cc56170508f2b":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_2783f2b3b469440e829ecf06ce441e24","IPY_MODEL_740089b7671147a8b2aa5334dbe299a1","IPY_MODEL_a55dbf76cedf4c51a80127d1368f00fa"],"layout":"IPY_MODEL_fcc0299f56d54e069e252951755dd8d9"}},"2783f2b3b469440e829ecf06ce441e24":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_5a16a657767448af9953262cbe566fda","placeholder":"","style":"IPY_MODEL_279728f2f8e842af9b078cdd58d71af0","value":"Downloading: 100%"}},"740089b7671147a8b2aa5334dbe299a1":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_a3452d2825e040f9aad5667274d1d9d9","max":483,"min":0,"orientation":"horizontal","style":"IPY_MODEL_c8b548fcf7e14265ade8eb891b4717bf","value":483}},"a55dbf76cedf4c51a80127d1368f00fa":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_3ef5ff5cb4c54628bb3bc720a65f93a2","placeholder":"","style":"IPY_MODEL_eb8260186835427ab020dbdf4d484794","value":" 483/483 [00:00<00:00, 34.3kB/s]"}},"fcc0299f56d54e069e252951755dd8d9":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"5a16a657767448af9953262cbe566fda":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"279728f2f8e842af9b078cdd58d71af0":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"a3452d2825e040f9aad5667274d1d9d9":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"c8b548fcf7e14265ade8eb891b4717bf":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"3ef5ff5cb4c54628bb3bc720a65f93a2":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"eb8260186835427ab020dbdf4d484794":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"5f67cfa6f99c4045a77ef8f221ed8a72":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_b07045b7f68944aeb2c8bd0e41994b93","IPY_MODEL_137fcc68aefc48179ababf622aad0776","IPY_MODEL_96b98cd1ec9946d58e510739cf43324e"],"layout":"IPY_MODEL_c6eb6b1626314623b55ad235895da2f9"}},"b07045b7f68944aeb2c8bd0e41994b93":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_72cad00b563945b6b5c9c43f8eb34172","placeholder":"","style":"IPY_MODEL_2971a235130f4f72b0b8486364d63ad5","value":"Downloading: 100%"}},"137fcc68aefc48179ababf622aad0776":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_c70eb58ccb2347d38c8cde483c47191f","max":231508,"min":0,"orientation":"horizontal","style":"IPY_MODEL_b7b7225c7d7943e280b421c760b72caa","value":231508}},"96b98cd1ec9946d58e510739cf43324e":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_147c8d4a28d146a792e7c8a037bcb011","placeholder":"","style":"IPY_MODEL_823d188f499e47f6a8d87503c4ad77f7","value":" 232k/232k [00:00<00:00, 324kB/s]"}},"c6eb6b1626314623b55ad235895da2f9":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"72cad00b563945b6b5c9c43f8eb34172":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"2971a235130f4f72b0b8486364d63ad5":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"c70eb58ccb2347d38c8cde483c47191f":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b7b7225c7d7943e280b421c760b72caa":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"147c8d4a28d146a792e7c8a037bcb011":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"823d188f499e47f6a8d87503c4ad77f7":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"029fdd7a3b0842229d7b0a93c5867fa1":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_438bcf79e8694464ad3a846a0643be03","IPY_MODEL_a8baed453dd9425fb3d788033508119d","IPY_MODEL_375bd083c65b4bf882f21c29c858890c"],"layout":"IPY_MODEL_149d349aa3cb46c588d164bd37b84117"}},"438bcf79e8694464ad3a846a0643be03":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_a12bce3f9ff841f683b19a6b581c587f","placeholder":"","style":"IPY_MODEL_4d864c90cd41415e9e610edf9fba526b","value":"Downloading: 100%"}},"a8baed453dd9425fb3d788033508119d":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_323fcf7620f04d9da487b8628e229e5b","max":466062,"min":0,"orientation":"horizontal","style":"IPY_MODEL_c8259c53289d4100a9fab111d220bea3","value":466062}},"375bd083c65b4bf882f21c29c858890c":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_7ac6ebbf3dc040ae9a9b3614557da598","placeholder":"","style":"IPY_MODEL_6d19cf0811e64cd7b29cb63458060fad","value":" 466k/466k [00:01<00:00, 542kB/s]"}},"149d349aa3cb46c588d164bd37b84117":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"a12bce3f9ff841f683b19a6b581c587f":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"4d864c90cd41415e9e610edf9fba526b":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"323fcf7620f04d9da487b8628e229e5b":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"c8259c53289d4100a9fab111d220bea3":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"7ac6ebbf3dc040ae9a9b3614557da598":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6d19cf0811e64cd7b29cb63458060fad":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"69c863e980624e10bb6afad72fed6cd1":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_3c160b0fb3d7466aa0f79c6233d16001","IPY_MODEL_8b26dd18f285460296a17d6b856f30aa","IPY_MODEL_d795813bd1e447ec8ca874a4eb58c806"],"layout":"IPY_MODEL_8b9b4713c05e402491fa537414d0bd0b"}},"3c160b0fb3d7466aa0f79c6233d16001":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_d49fc731f3634038b245ed8b19fec175","placeholder":"","style":"IPY_MODEL_ac1f10abc80449b3b570f462332de626","value":"100%"}},"8b26dd18f285460296a17d6b856f30aa":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_834b4dee42f84269801adc0f5517a89f","max":1,"min":0,"orientation":"horizontal","style":"IPY_MODEL_6c363fc2f9bd454f86bd477dada30a71","value":1}},"d795813bd1e447ec8ca874a4eb58c806":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_17d0256a8547455fbe4e4f6935cea7a4","placeholder":"","style":"IPY_MODEL_f622e7b698bf47bcb1233230e6771772","value":" 1/1 [00:01<00:00, 1.50s/ba]"}},"8b9b4713c05e402491fa537414d0bd0b":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d49fc731f3634038b245ed8b19fec175":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ac1f10abc80449b3b570f462332de626":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"834b4dee42f84269801adc0f5517a89f":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6c363fc2f9bd454f86bd477dada30a71":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"17d0256a8547455fbe4e4f6935cea7a4":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"f622e7b698bf47bcb1233230e6771772":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"048922deeb3141b1805c22f41a880ecc":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_6148410294ec48c3804ed15e7034cb4f","IPY_MODEL_70773097ffad4c9b85b6a739a514e1b3","IPY_MODEL_3da5ccb880f848dcaef28bb694c4bb70"],"layout":"IPY_MODEL_c9dcf555150b4ecd80addf1c1bb33824"}},"6148410294ec48c3804ed15e7034cb4f":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_5ab0a87049344e46929a316bc2a2e3e9","placeholder":"","style":"IPY_MODEL_deb4b8225c6d4fdba6f2efbb33b17000","value":"100%"}},"70773097ffad4c9b85b6a739a514e1b3":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_a7953cfec05a4585b366d3d8e4b2123b","max":1,"min":0,"orientation":"horizontal","style":"IPY_MODEL_b912f40f4cc247f3a782da9507ef3e09","value":1}},"3da5ccb880f848dcaef28bb694c4bb70":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_1a2e990827f248e7bc47da5ef7f17826","placeholder":"","style":"IPY_MODEL_31014192818d46ff8b3671e3c5d180de","value":" 1/1 [00:00<00:00, 6.17ba/s]"}},"c9dcf555150b4ecd80addf1c1bb33824":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"5ab0a87049344e46929a316bc2a2e3e9":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"deb4b8225c6d4fdba6f2efbb33b17000":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"a7953cfec05a4585b366d3d8e4b2123b":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b912f40f4cc247f3a782da9507ef3e09":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"1a2e990827f248e7bc47da5ef7f17826":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"31014192818d46ff8b3671e3c5d180de":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"0177ae63703f4b01889c07ad4cf86e29":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_02a9d73f776e431198ace480d231d10b","IPY_MODEL_3036423ebe6a49ad91f0de6e728d0ad8","IPY_MODEL_85c41307b3c84b5a86a24f8a2463a939"],"layout":"IPY_MODEL_9a097fa5b27749c7aa379a4ca349bf5b"}},"02a9d73f776e431198ace480d231d10b":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_e21e33b65f604a56b7ee6c3839362574","placeholder":"","style":"IPY_MODEL_41bd67ce77564fa5be2527f800620262","value":"100%"}},"3036423ebe6a49ad91f0de6e728d0ad8":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_48ba903b498a4dbe82b77dd7df3b28c5","max":1,"min":0,"orientation":"horizontal","style":"IPY_MODEL_4d0d3d035fc6444fa43b487ce81bb981","value":1}},"85c41307b3c84b5a86a24f8a2463a939":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_5ad971ef99af4d379967cf291d13ab74","placeholder":"","style":"IPY_MODEL_a8c5dfa23d0f46d5a2b03350abb62c07","value":" 1/1 [00:00<00:00, 6.18ba/s]"}},"9a097fa5b27749c7aa379a4ca349bf5b":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e21e33b65f604a56b7ee6c3839362574":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"41bd67ce77564fa5be2527f800620262":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"48ba903b498a4dbe82b77dd7df3b28c5":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"4d0d3d035fc6444fa43b487ce81bb981":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"5ad971ef99af4d379967cf291d13ab74":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"a8c5dfa23d0f46d5a2b03350abb62c07":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"6d20ccf8cbfc434d83d29cf94d66fa2f":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_563f6e63d6334ffdb92b824ca4543e26","IPY_MODEL_3a3663e4ccf447178e720efe74226eb2","IPY_MODEL_bd5032bb6bd04505a16d6aaeb344a411"],"layout":"IPY_MODEL_843844a0068c4252931450f24da6b86e"}},"563f6e63d6334ffdb92b824ca4543e26":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_bcd73e1f781c4d1d950ae79b4f6787bf","placeholder":"","style":"IPY_MODEL_3490bc468f2e4bbeb57e76aaf9706308","value":"Downloading: 100%"}},"3a3663e4ccf447178e720efe74226eb2":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_2b8f7b15d44346e8a86b7414be26c8f3","max":267967963,"min":0,"orientation":"horizontal","style":"IPY_MODEL_e3bad1e7fa8142ce9d618d0c8b1a2225","value":267967963}},"bd5032bb6bd04505a16d6aaeb344a411":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_402cabec74604cc09d0fff59dd529621","placeholder":"","style":"IPY_MODEL_4882a7357dd3468491f3bf78eec1909c","value":" 268M/268M [00:03<00:00, 84.4MB/s]"}},"843844a0068c4252931450f24da6b86e":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"bcd73e1f781c4d1d950ae79b4f6787bf":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"3490bc468f2e4bbeb57e76aaf9706308":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"2b8f7b15d44346e8a86b7414be26c8f3":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e3bad1e7fa8142ce9d618d0c8b1a2225":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"402cabec74604cc09d0fff59dd529621":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"4882a7357dd3468491f3bf78eec1909c":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"101a4116f12b44f6b426fc2814944eb8":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_9edbf9a8ba5d4142a0a12e5ea696da5c","IPY_MODEL_8af71848005147cfaedd0c9ec9d4fd49","IPY_MODEL_44dbd17197c64b538c63a610f7f31617"],"layout":"IPY_MODEL_c7fbfa047d884faeb5969ae896515fc1"}},"9edbf9a8ba5d4142a0a12e5ea696da5c":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_84928d15dbe2497baa439cb5721b83a1","placeholder":"","style":"IPY_MODEL_ba72138f0e604758b4490c754875af78","value":"100%"}},"8af71848005147cfaedd0c9ec9d4fd49":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_b0e164b8f84946f88721e0c0069120a1","max":16,"min":0,"orientation":"horizontal","style":"IPY_MODEL_6e54fca8c14542cabb8b8a4b33e2dbf8","value":16}},"44dbd17197c64b538c63a610f7f31617":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_0bf2839bc8d64d2e94ad85881c74bf92","placeholder":"","style":"IPY_MODEL_6ef1bc813fcd44e88a28492317397f9a","value":" 16/16 [00:33<00:00, 2.11s/ba]"}},"c7fbfa047d884faeb5969ae896515fc1":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"84928d15dbe2497baa439cb5721b83a1":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ba72138f0e604758b4490c754875af78":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"b0e164b8f84946f88721e0c0069120a1":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6e54fca8c14542cabb8b8a4b33e2dbf8":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"0bf2839bc8d64d2e94ad85881c74bf92":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6ef1bc813fcd44e88a28492317397f9a":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"ec33154d5df8415098870a8cfa336916":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_b1611173b99e4e7e887289ec11b22549","IPY_MODEL_b2b36893a8404cbeb820029a11f026c1","IPY_MODEL_1026b11d38b64ec88111620d4e6496b5"],"layout":"IPY_MODEL_a40d5fc95a36471d90292263ecbf3a9a"}},"b1611173b99e4e7e887289ec11b22549":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_1f92f00548c1492bb9d5fe9a827c1465","placeholder":"","style":"IPY_MODEL_b8fc14d3ad2e493cab95946f99eaa22d","value":"100%"}},"b2b36893a8404cbeb820029a11f026c1":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_8674806cef2647afa397d1a1a67aeb9c","max":2,"min":0,"orientation":"horizontal","style":"IPY_MODEL_1afb862c628b422788c23230a7c33263","value":2}},"1026b11d38b64ec88111620d4e6496b5":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_456d3d915eab4f77b0bf0f2e0326d818","placeholder":"","style":"IPY_MODEL_92f5f4755e724e12a59fe33e372e84e4","value":" 2/2 [00:03<00:00, 1.70s/ba]"}},"a40d5fc95a36471d90292263ecbf3a9a":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"1f92f00548c1492bb9d5fe9a827c1465":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b8fc14d3ad2e493cab95946f99eaa22d":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"8674806cef2647afa397d1a1a67aeb9c":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"1afb862c628b422788c23230a7c33263":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"456d3d915eab4f77b0bf0f2e0326d818":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"92f5f4755e724e12a59fe33e372e84e4":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"2fd74fded781498f86d9b097b7bebd2d":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_b3f0a364d8db417e95971d9bc93cd894","IPY_MODEL_ba119c289d864b8ab108e9cf52a49820","IPY_MODEL_01aa5eadc6a946528e32244d30383ed7"],"layout":"IPY_MODEL_c51fa6e6e9864a7bb0be5bfb9f71c637"}},"b3f0a364d8db417e95971d9bc93cd894":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_1fd5b81af51d4b30b17f630586339560","placeholder":"","style":"IPY_MODEL_f0cc4fc15d62434499f1e0fefe2f03b3","value":"100%"}},"ba119c289d864b8ab108e9cf52a49820":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_3d10c62f029449bcbc574169ac502748","max":2,"min":0,"orientation":"horizontal","style":"IPY_MODEL_ecb19ac1b1664734a661aa34c037e9b8","value":2}},"01aa5eadc6a946528e32244d30383ed7":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_73c4003f63bc4da1bffd26ba93218857","placeholder":"","style":"IPY_MODEL_e869dea153bf4883ba3e883359e4ba99","value":" 2/2 [00:03<00:00, 1.64s/ba]"}},"c51fa6e6e9864a7bb0be5bfb9f71c637":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"1fd5b81af51d4b30b17f630586339560":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"f0cc4fc15d62434499f1e0fefe2f03b3":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"3d10c62f029449bcbc574169ac502748":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ecb19ac1b1664734a661aa34c037e9b8":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"73c4003f63bc4da1bffd26ba93218857":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e869dea153bf4883ba3e883359e4ba99":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"80aa883b3cf649ceb6e5b85ed5ea5509":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_313593925c2a4141a64864e53e122063","IPY_MODEL_0b9065b551c8412f80340a506e6c685b","IPY_MODEL_2c451fd1646d400d8d24adef4c5edaab"],"layout":"IPY_MODEL_44040ea5691b408a8f206b0acc3b9ea7"}},"313593925c2a4141a64864e53e122063":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_838fadbc513045ce9492e00a834433af","placeholder":"","style":"IPY_MODEL_aeb48bd095004b65b3eccd405c997500","value":"100%"}},"0b9065b551c8412f80340a506e6c685b":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_d94d1a4d44ad4a4594f1008be77cfe51","max":125,"min":0,"orientation":"horizontal","style":"IPY_MODEL_0bdcc5fd663c45d79e31442b9abb40e5","value":125}},"2c451fd1646d400d8d24adef4c5edaab":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_8e0cd84d88f0431eb265ecf5114b2288","placeholder":"","style":"IPY_MODEL_7a4511d0bb9143569319cf5ae8c7836f","value":" 125/125 [00:04<00:00, 28.03ba/s]"}},"44040ea5691b408a8f206b0acc3b9ea7":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"838fadbc513045ce9492e00a834433af":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"aeb48bd095004b65b3eccd405c997500":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"d94d1a4d44ad4a4594f1008be77cfe51":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"0bdcc5fd663c45d79e31442b9abb40e5":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"8e0cd84d88f0431eb265ecf5114b2288":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"7a4511d0bb9143569319cf5ae8c7836f":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}}}}},"nbformat":4,"nbformat_minor":5}
\ No newline at end of file
diff --git a/Transformer/01_TextClassification/images/apache_arrow.png b/Transformer/01_TextClassification/images/apache_arrow.png
new file mode 100644
index 0000000..0dbac71
Binary files /dev/null and b/Transformer/01_TextClassification/images/apache_arrow.png differ
diff --git a/Transformer/01_TextClassification/images/boxplot.png b/Transformer/01_TextClassification/images/boxplot.png
new file mode 100644
index 0000000..3c2276e
Binary files /dev/null and b/Transformer/01_TextClassification/images/boxplot.png differ
diff --git a/Transformer/01_TextClassification/images/confusedmatrix.png b/Transformer/01_TextClassification/images/confusedmatrix.png
new file mode 100644
index 0000000..fd905be
Binary files /dev/null and b/Transformer/01_TextClassification/images/confusedmatrix.png differ
diff --git a/Transformer/01_TextClassification/images/distilbert_textclassifier.png b/Transformer/01_TextClassification/images/distilbert_textclassifier.png
new file mode 100644
index 0000000..866dc28
Binary files /dev/null and b/Transformer/01_TextClassification/images/distilbert_textclassifier.png differ
diff --git a/Transformer/01_TextClassification/images/umap_parameters.png b/Transformer/01_TextClassification/images/umap_parameters.png
new file mode 100644
index 0000000..828b221
Binary files /dev/null and b/Transformer/01_TextClassification/images/umap_parameters.png differ
diff --git a/Transformer/03_MultiLanguageDetection/README.md b/Transformer/03_MultiLanguageDetection/README.md
new file mode 100644
index 0000000..86191ad
--- /dev/null
+++ b/Transformer/03_MultiLanguageDetection/README.md
@@ -0,0 +1,2 @@
+# 다중언어 개체명 인식 (MultiLanguage Name Entity Recognition)
+
diff --git a/Transformer/03_MultiLanguageDetection/colab/NER_Transformer.ipynb b/Transformer/03_MultiLanguageDetection/colab/NER_Transformer.ipynb
new file mode 100644
index 0000000..aa1c431
--- /dev/null
+++ b/Transformer/03_MultiLanguageDetection/colab/NER_Transformer.ipynb
@@ -0,0 +1 @@
+{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"machine_shape":"hm","authorship_tag":"ABX9TyMGaoeKP+KphIFKsmLXH1ib"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"},"widgets":{"application/vnd.jupyter.widget-state+json":{"463f5547f42a407ea77c9da398cd0d70":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_3e8e0acc912442dcb2c4c9ab990d9408","IPY_MODEL_e24c62ac74114852a4aba3da8279f997","IPY_MODEL_b7ae4618d0dc4d80b4425c3ca2ac59ac"],"layout":"IPY_MODEL_6ec2206460944b53abfa4e3fb6900f68"}},"3e8e0acc912442dcb2c4c9ab990d9408":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_57deeee9ba6a4b13a5fc7c92b5e2316b","placeholder":"","style":"IPY_MODEL_f6d6006d40a849d89e7e118b03661ed1","value":"Downloading builder script: 100%"}},"e24c62ac74114852a4aba3da8279f997":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_048a919356ba4c5f9047b7e3e315deb9","max":37487,"min":0,"orientation":"horizontal","style":"IPY_MODEL_e5dd8f341c584512a9bb41fbfffbffc0","value":37487}},"b7ae4618d0dc4d80b4425c3ca2ac59ac":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_1225a3d5d9724ce4988cdedbbd1c37ac","placeholder":"","style":"IPY_MODEL_971d5d798c564be7a38b86548aec1f4e","value":" 37.5k/37.5k [00:00<00:00, 2.18MB/s]"}},"6ec2206460944b53abfa4e3fb6900f68":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"57deeee9ba6a4b13a5fc7c92b5e2316b":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"f6d6006d40a849d89e7e118b03661ed1":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"048a919356ba4c5f9047b7e3e315deb9":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e5dd8f341c584512a9bb41fbfffbffc0":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"1225a3d5d9724ce4988cdedbbd1c37ac":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"971d5d798c564be7a38b86548aec1f4e":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"81a0f10dfe0a4c6abfd1c0437a13b1c2":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_670de4b7e76f408488d5dabc8dcdc64d","IPY_MODEL_82c09669de694a318b21ce5e43530086","IPY_MODEL_f2d860c19e4a4374aed9462457a8a44c"],"layout":"IPY_MODEL_0ca6b4590a7e47c58da0e4570ac503a7"}},"670de4b7e76f408488d5dabc8dcdc64d":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_2fe526df2564455f9003114ebc74d911","placeholder":"","style":"IPY_MODEL_9384638f81cd4c95a32b75064711fca6","value":"Downloading metadata: 100%"}},"82c09669de694a318b21ce5e43530086":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_ac3226796b3e4387b2578d1de79f3ce9","max":592704,"min":0,"orientation":"horizontal","style":"IPY_MODEL_7880a8251bbe4524a345dac05300ceed","value":592704}},"f2d860c19e4a4374aed9462457a8a44c":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_e8bcf6f9f89f4af3b67046a16dce62fb","placeholder":"","style":"IPY_MODEL_0e2d378d62ed423e8d7d03f3d90d72a5","value":" 593k/593k [00:00<00:00, 695kB/s]"}},"0ca6b4590a7e47c58da0e4570ac503a7":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"2fe526df2564455f9003114ebc74d911":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"9384638f81cd4c95a32b75064711fca6":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"ac3226796b3e4387b2578d1de79f3ce9":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"7880a8251bbe4524a345dac05300ceed":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"e8bcf6f9f89f4af3b67046a16dce62fb":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"0e2d378d62ed423e8d7d03f3d90d72a5":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"fdf2854735904915b5d9600a2fb43dc7":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_def20d8846dc4fb289254a64ed3ac05b","IPY_MODEL_b83be59fa2834698bbcbae99d2a77dde","IPY_MODEL_efc301732ca644aa97b437f539289cef"],"layout":"IPY_MODEL_aa5b46580ef541c4a2b0879397cf5468"}},"def20d8846dc4fb289254a64ed3ac05b":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_65fb2f5a632b4970bc8ac087341d4a21","placeholder":"","style":"IPY_MODEL_f072833a7bb64cf5a34d08e7e1c18f35","value":"Downloading readme: 100%"}},"b83be59fa2834698bbcbae99d2a77dde":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_d6c0de66f82348f08b694484812fad12","max":104803,"min":0,"orientation":"horizontal","style":"IPY_MODEL_93cdf06140e84a9392470a75d55e9435","value":104803}},"efc301732ca644aa97b437f539289cef":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_46a99245732946ca8906452625cf4393","placeholder":"","style":"IPY_MODEL_f5c26f9c034847d1907ba505b0e1a4b5","value":" 105k/105k [00:00<00:00, 198kB/s]"}},"aa5b46580ef541c4a2b0879397cf5468":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"65fb2f5a632b4970bc8ac087341d4a21":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"f072833a7bb64cf5a34d08e7e1c18f35":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"d6c0de66f82348f08b694484812fad12":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"93cdf06140e84a9392470a75d55e9435":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"46a99245732946ca8906452625cf4393":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"f5c26f9c034847d1907ba505b0e1a4b5":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"e734c6943df64bc9b362c9d9e0c502b6":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_639c4223827245839de246cbfd5ea107","IPY_MODEL_91518d026fd04384846b34a312c29b3a","IPY_MODEL_42ab3545711c441981bdb3fa56c8aaaf"],"layout":"IPY_MODEL_fa2a7322bf9848279f8f1705bc9fbff0"}},"639c4223827245839de246cbfd5ea107":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_6075a332159e436a9941f389f83faef0","placeholder":"","style":"IPY_MODEL_e80b38b953b841089dfdae5c8e32352f","value":"Downloading data: 100%"}},"91518d026fd04384846b34a312c29b3a":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_3b3ee66b385e4f35843edae28a14b3cf","max":234008884,"min":0,"orientation":"horizontal","style":"IPY_MODEL_d8ff77a6589442a09e8853bacf338586","value":234008884}},"42ab3545711c441981bdb3fa56c8aaaf":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_d3ab122480fe41188319759aa9ae9afb","placeholder":"","style":"IPY_MODEL_888b74615f464f918fac670eb9117c33","value":" 234M/234M [00:17<00:00, 12.1MB/s]"}},"fa2a7322bf9848279f8f1705bc9fbff0":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6075a332159e436a9941f389f83faef0":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e80b38b953b841089dfdae5c8e32352f":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"3b3ee66b385e4f35843edae28a14b3cf":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d8ff77a6589442a09e8853bacf338586":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"d3ab122480fe41188319759aa9ae9afb":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"888b74615f464f918fac670eb9117c33":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"7067bd8b5bf44733918d96a9756daa16":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_4b9e7fe66c214dc8a225ddb580e77c8d","IPY_MODEL_625c6ff8f0c94d8bb1a99ce77477d1bc","IPY_MODEL_5756b4565de94768a603d2e5fc2cd012"],"layout":"IPY_MODEL_125faa87950c42b7a105a6be57bf6cd2"}},"4b9e7fe66c214dc8a225ddb580e77c8d":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_a78a576d149546d1b6d0f98bd7673c8d","placeholder":"","style":"IPY_MODEL_ff7c565e98da45758bc3d0cdfd0e940c","value":"Generating train split: 96%"}},"625c6ff8f0c94d8bb1a99ce77477d1bc":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"","description":"","description_tooltip":null,"layout":"IPY_MODEL_df5c309de3514f028322a6a526b1a35b","max":20000,"min":0,"orientation":"horizontal","style":"IPY_MODEL_ecfdeacc4c7f40588c32b8a840e724f0","value":20000}},"5756b4565de94768a603d2e5fc2cd012":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_9a05ab36f6df4459a66e2c2bf062f32f","placeholder":"","style":"IPY_MODEL_4d783abaa6a249ae90e2fde23897faaf","value":" 19145/20000 [00:02<00:00, 8744.34 examples/s]"}},"125faa87950c42b7a105a6be57bf6cd2":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":"hidden","width":null}},"a78a576d149546d1b6d0f98bd7673c8d":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ff7c565e98da45758bc3d0cdfd0e940c":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"df5c309de3514f028322a6a526b1a35b":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ecfdeacc4c7f40588c32b8a840e724f0":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"9a05ab36f6df4459a66e2c2bf062f32f":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"4d783abaa6a249ae90e2fde23897faaf":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"8db9618fc24444e1b1e0648188494313":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_3d3b01b3c93346ecba270614969ebf34","IPY_MODEL_8a3884e9458a46a7bfb1e54cc2224152","IPY_MODEL_bd822aed87594262a9d1d89113baabf5"],"layout":"IPY_MODEL_b2959a54524e4e87a47eed3ef072674f"}},"3d3b01b3c93346ecba270614969ebf34":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_3c3f38763ed649e2bbb6b1e0464f59dd","placeholder":"","style":"IPY_MODEL_13b27ca75d9d4f1c9f28b762e6115347","value":"Generating validation split: 92%"}},"8a3884e9458a46a7bfb1e54cc2224152":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"","description":"","description_tooltip":null,"layout":"IPY_MODEL_d2b00af01bd64fdf8468f95277232cb8","max":10000,"min":0,"orientation":"horizontal","style":"IPY_MODEL_731076999b3b4bd0a4526cd4b7748c9b","value":10000}},"bd822aed87594262a9d1d89113baabf5":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_ca3222f811b04024b165de81a833e4b7","placeholder":"","style":"IPY_MODEL_808df7c6d141417a94d27969d0cbbfc6","value":" 9217/10000 [00:01<00:00, 8774.92 examples/s]"}},"b2959a54524e4e87a47eed3ef072674f":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":"hidden","width":null}},"3c3f38763ed649e2bbb6b1e0464f59dd":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"13b27ca75d9d4f1c9f28b762e6115347":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"d2b00af01bd64fdf8468f95277232cb8":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"731076999b3b4bd0a4526cd4b7748c9b":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"ca3222f811b04024b165de81a833e4b7":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"808df7c6d141417a94d27969d0cbbfc6":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"8c0fd6197d7a470c9456de121a762cf0":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_28218e2374204431baa591bf30140eb2","IPY_MODEL_61d678a0cd664e8f8e69df00ef4adb12","IPY_MODEL_e1645318450e455882ea30d1aa82982f"],"layout":"IPY_MODEL_0f2561e124974abb91fcf5bc4a969dc3"}},"28218e2374204431baa591bf30140eb2":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_446633c15fc24e088f1bb65d7ae8771c","placeholder":"","style":"IPY_MODEL_78ddbd182c8040aaa24992292c86bcbb","value":"Generating test split: 100%"}},"61d678a0cd664e8f8e69df00ef4adb12":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"","description":"","description_tooltip":null,"layout":"IPY_MODEL_54a2baa40416436dbfd7257d46330708","max":10000,"min":0,"orientation":"horizontal","style":"IPY_MODEL_7d65a0f07e9f44cc8e49a6bc2f0fb8bc","value":10000}},"e1645318450e455882ea30d1aa82982f":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_b36691f62c074bd98df7fe380538329f","placeholder":"","style":"IPY_MODEL_dd86baaef5354a59a2929edf5293af88","value":" 10000/10000 [00:01<00:00, 8055.43 examples/s]"}},"0f2561e124974abb91fcf5bc4a969dc3":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":"hidden","width":null}},"446633c15fc24e088f1bb65d7ae8771c":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"78ddbd182c8040aaa24992292c86bcbb":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"54a2baa40416436dbfd7257d46330708":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"7d65a0f07e9f44cc8e49a6bc2f0fb8bc":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"b36691f62c074bd98df7fe380538329f":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"dd86baaef5354a59a2929edf5293af88":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"528fea30282642ffa2648136daf752ed":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_71d6869f86474afda3a272dd407c2843","IPY_MODEL_209f02896265411dac377a72f107ce67","IPY_MODEL_ab57845cdfb44c39931248788b0b826e"],"layout":"IPY_MODEL_af3597f6af5740d0b4c02785e59d3df5"}},"71d6869f86474afda3a272dd407c2843":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_e30098bf33d94a549524d3071de5067b","placeholder":"","style":"IPY_MODEL_a38a954f35504c8abdd317e9e466876a","value":"100%"}},"209f02896265411dac377a72f107ce67":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_64d376b5e87f4433a8d3366b0052b6bb","max":3,"min":0,"orientation":"horizontal","style":"IPY_MODEL_5bbe1bb7285c4bfc85016baef496fc7b","value":3}},"ab57845cdfb44c39931248788b0b826e":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_e54d8cc778924fcb83d33fbb064558fd","placeholder":"","style":"IPY_MODEL_aadce0950e0f402a943c5c66e867b54d","value":" 3/3 [00:00<00:00, 112.68it/s]"}},"af3597f6af5740d0b4c02785e59d3df5":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e30098bf33d94a549524d3071de5067b":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"a38a954f35504c8abdd317e9e466876a":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"64d376b5e87f4433a8d3366b0052b6bb":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"5bbe1bb7285c4bfc85016baef496fc7b":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"e54d8cc778924fcb83d33fbb064558fd":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"aadce0950e0f402a943c5c66e867b54d":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"17091a06c8e645f3bf44ceb65aa500a7":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_eac21acf122d47d8b7eeff260f68fd56","IPY_MODEL_6d802037c06e4de0aac6b7a22493afef","IPY_MODEL_eb4324055c984ab8bec9fe61e1ac83c0"],"layout":"IPY_MODEL_fc4b6af334bd4d6295ec029d91c99da8"}},"eac21acf122d47d8b7eeff260f68fd56":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_ec2fc53ba43e4df8b7904f0a63953d59","placeholder":"","style":"IPY_MODEL_3238151e0a8a4ec0870c71d944092119","value":"Generating train split: 98%"}},"6d802037c06e4de0aac6b7a22493afef":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"","description":"","description_tooltip":null,"layout":"IPY_MODEL_51ddd8341abd4ac2b05c11549627c4b4","max":20000,"min":0,"orientation":"horizontal","style":"IPY_MODEL_b94677eb309245f8b33cc71d3db0a7b6","value":20000}},"eb4324055c984ab8bec9fe61e1ac83c0":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_d219026755154d02be51fabf80eb67bb","placeholder":"","style":"IPY_MODEL_68e7340b165a46f9a7ccb1eb0df621ba","value":" 19685/20000 [00:01<00:00, 10458.93 examples/s]"}},"fc4b6af334bd4d6295ec029d91c99da8":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":"hidden","width":null}},"ec2fc53ba43e4df8b7904f0a63953d59":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"3238151e0a8a4ec0870c71d944092119":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"51ddd8341abd4ac2b05c11549627c4b4":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b94677eb309245f8b33cc71d3db0a7b6":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"d219026755154d02be51fabf80eb67bb":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"68e7340b165a46f9a7ccb1eb0df621ba":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"455d943989564ef89f404387adda250c":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_fe8afaa1e6ac43edbbd6cc7a9f0024a3","IPY_MODEL_63e1183ed437449493fe3ef45ebe49bd","IPY_MODEL_f5a8511a631249a1baf14671d91dfd09"],"layout":"IPY_MODEL_ee1ab08c5e204e56a48074c294f9cc9e"}},"fe8afaa1e6ac43edbbd6cc7a9f0024a3":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_754ad93a80754e7ab1709ea54b39e834","placeholder":"","style":"IPY_MODEL_dd01f49f5a9741e2bd25fa3ae3d6f396","value":"Generating validation split: 98%"}},"63e1183ed437449493fe3ef45ebe49bd":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"","description":"","description_tooltip":null,"layout":"IPY_MODEL_871e3fe86eb44f418726ce435002cf33","max":10000,"min":0,"orientation":"horizontal","style":"IPY_MODEL_d215f260aa774297bfa27aac1ac4edd9","value":10000}},"f5a8511a631249a1baf14671d91dfd09":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_7b80b785f62849d699ba34c8c85bec5b","placeholder":"","style":"IPY_MODEL_e743c66bd43740b68cdc391d16e5b58e","value":" 9834/10000 [00:00<00:00, 10984.31 examples/s]"}},"ee1ab08c5e204e56a48074c294f9cc9e":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":"hidden","width":null}},"754ad93a80754e7ab1709ea54b39e834":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"dd01f49f5a9741e2bd25fa3ae3d6f396":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"871e3fe86eb44f418726ce435002cf33":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d215f260aa774297bfa27aac1ac4edd9":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"7b80b785f62849d699ba34c8c85bec5b":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e743c66bd43740b68cdc391d16e5b58e":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"90247571f6a5433491df5e18e65e9679":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_3e1e59d2553d4cb6a38fab2b518a5fc3","IPY_MODEL_77f6e964c37a4bea8a3f945ddfa13788","IPY_MODEL_22f193b2cf9e49fbac719e85ec70fdba"],"layout":"IPY_MODEL_90b911d48185465297cb680833a35bb2"}},"3e1e59d2553d4cb6a38fab2b518a5fc3":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_d097613d715245c59c175813e1a54952","placeholder":"","style":"IPY_MODEL_df578f31a9ad409d8e57840b7a73de19","value":"Generating test split: 100%"}},"77f6e964c37a4bea8a3f945ddfa13788":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"","description":"","description_tooltip":null,"layout":"IPY_MODEL_6920ab7ce46f433db0b4e26e2cb4c238","max":10000,"min":0,"orientation":"horizontal","style":"IPY_MODEL_629c3f6dff504deeab8fca554bb983e0","value":10000}},"22f193b2cf9e49fbac719e85ec70fdba":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_a75c9b9b2f5048d4be418c08f1f5d073","placeholder":"","style":"IPY_MODEL_0e7d9985300341fe83674d71f8fa1dc8","value":" 10000/10000 [00:01<00:00, 9855.31 examples/s]"}},"90b911d48185465297cb680833a35bb2":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":"hidden","width":null}},"d097613d715245c59c175813e1a54952":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"df578f31a9ad409d8e57840b7a73de19":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"6920ab7ce46f433db0b4e26e2cb4c238":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"629c3f6dff504deeab8fca554bb983e0":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"a75c9b9b2f5048d4be418c08f1f5d073":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"0e7d9985300341fe83674d71f8fa1dc8":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"2fdca93baefd4245ac3873186d587c6e":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_2ca4e13c39644af29486cdee448b49c2","IPY_MODEL_f50f525537f4450b829e051d2ec85e4e","IPY_MODEL_08ff1379909e430385a6691951944c77"],"layout":"IPY_MODEL_f51e322dbcf448188e567f90ad23c30d"}},"2ca4e13c39644af29486cdee448b49c2":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_92da546d72cb4e9aa7e51d7568b3b0d6","placeholder":"","style":"IPY_MODEL_a9cfcfd2516d4219bb5e9e96cead0934","value":"100%"}},"f50f525537f4450b829e051d2ec85e4e":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_f86b4c410ee8489fb7cdf310d846d103","max":3,"min":0,"orientation":"horizontal","style":"IPY_MODEL_fbc3c56a9d404e85829b50220bc86346","value":3}},"08ff1379909e430385a6691951944c77":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_e2aed321379743f4b2b2766f18e5cd5a","placeholder":"","style":"IPY_MODEL_100f02d754304132978e6ad7e85e5195","value":" 3/3 [00:00<00:00, 152.15it/s]"}},"f51e322dbcf448188e567f90ad23c30d":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"92da546d72cb4e9aa7e51d7568b3b0d6":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"a9cfcfd2516d4219bb5e9e96cead0934":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"f86b4c410ee8489fb7cdf310d846d103":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"fbc3c56a9d404e85829b50220bc86346":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"e2aed321379743f4b2b2766f18e5cd5a":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"100f02d754304132978e6ad7e85e5195":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"3391d8a5aaaf4e1098cce55341610356":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_65b01db542b64f52b036a2f19b135541","IPY_MODEL_af4e2454d79e41fa84caded52f520af1","IPY_MODEL_51b84b63831c47b896d3d27e8a27ce99"],"layout":"IPY_MODEL_40b775ea8e0f4c28b36818aac6b0e03a"}},"65b01db542b64f52b036a2f19b135541":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_c7d291d758684e23ab54b56a16b796a6","placeholder":"","style":"IPY_MODEL_605253155e8540b68c784014bc2b9cbd","value":"Generating train split: 96%"}},"af4e2454d79e41fa84caded52f520af1":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"","description":"","description_tooltip":null,"layout":"IPY_MODEL_5a110d07464c4d8cb03ac3a9c6583e3e","max":20000,"min":0,"orientation":"horizontal","style":"IPY_MODEL_3861132317df4a3b975df7200d157868","value":20000}},"51b84b63831c47b896d3d27e8a27ce99":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_63decd70d69f4d569f1ed374716698b7","placeholder":"","style":"IPY_MODEL_24ff79aa2425457695361d2f0914d2e5","value":" 19175/20000 [00:02<00:00, 8759.72 examples/s]"}},"40b775ea8e0f4c28b36818aac6b0e03a":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":"hidden","width":null}},"c7d291d758684e23ab54b56a16b796a6":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"605253155e8540b68c784014bc2b9cbd":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"5a110d07464c4d8cb03ac3a9c6583e3e":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"3861132317df4a3b975df7200d157868":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"63decd70d69f4d569f1ed374716698b7":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"24ff79aa2425457695361d2f0914d2e5":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"46981a07ed6d4e2799ceb643c28b1363":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_1e32312f238644d492ce20f9e17a8579","IPY_MODEL_bb804f3e872d4945a15cd8411436c24e","IPY_MODEL_5a874aac91974aafa0f971fd02d54384"],"layout":"IPY_MODEL_89ea6514a9d3461aa7cf15397927df57"}},"1e32312f238644d492ce20f9e17a8579":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_72f634fad40c44e18f7b6a217efadb9c","placeholder":"","style":"IPY_MODEL_91cf4008d9d34abebbd9101af12d2c02","value":"Generating validation split: 91%"}},"bb804f3e872d4945a15cd8411436c24e":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"","description":"","description_tooltip":null,"layout":"IPY_MODEL_702ec4ca5b4641b99ca81079dc1d2f66","max":10000,"min":0,"orientation":"horizontal","style":"IPY_MODEL_969fdf84f8e54e9bbcf057e339ca2b8f","value":10000}},"5a874aac91974aafa0f971fd02d54384":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_00ee7fca00d148e28b780c78af929fb4","placeholder":"","style":"IPY_MODEL_df565407eb024f88b04d85f593f34ded","value":" 9115/10000 [00:00<00:00, 9217.56 examples/s]"}},"89ea6514a9d3461aa7cf15397927df57":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":"hidden","width":null}},"72f634fad40c44e18f7b6a217efadb9c":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"91cf4008d9d34abebbd9101af12d2c02":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"702ec4ca5b4641b99ca81079dc1d2f66":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"969fdf84f8e54e9bbcf057e339ca2b8f":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"00ee7fca00d148e28b780c78af929fb4":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"df565407eb024f88b04d85f593f34ded":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"ea5e3a222af7442bb5d3785c901418cc":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_6af251b973ee4852b8163d9488ad9c8b","IPY_MODEL_df7bcb4527be4680930502bf3d887f14","IPY_MODEL_96ce8787ee124601b8aceea2588646bc"],"layout":"IPY_MODEL_7ffd938674e341ec9aeccfa19a0c54ef"}},"6af251b973ee4852b8163d9488ad9c8b":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_d8e03239fb894f00ac44ea56377543db","placeholder":"","style":"IPY_MODEL_6c413ef8a0b0457c892b310966d401f3","value":"Generating test split: 93%"}},"df7bcb4527be4680930502bf3d887f14":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"","description":"","description_tooltip":null,"layout":"IPY_MODEL_808a257d8a854dc48cf8b6ae4ceae05d","max":10000,"min":0,"orientation":"horizontal","style":"IPY_MODEL_d40122b7e55240a4bb3b1d2a666663a8","value":10000}},"96ce8787ee124601b8aceea2588646bc":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_6a4d7901703a4f92b8ee2840ee101a7d","placeholder":"","style":"IPY_MODEL_84e5da56a7e44a728dabbc08e0538eff","value":" 9295/10000 [00:01<00:00, 9320.93 examples/s]"}},"7ffd938674e341ec9aeccfa19a0c54ef":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":"hidden","width":null}},"d8e03239fb894f00ac44ea56377543db":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6c413ef8a0b0457c892b310966d401f3":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"808a257d8a854dc48cf8b6ae4ceae05d":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d40122b7e55240a4bb3b1d2a666663a8":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"6a4d7901703a4f92b8ee2840ee101a7d":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"84e5da56a7e44a728dabbc08e0538eff":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"91bf26ecbf69487ca698874a0fefd0a4":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_9f03c407dc594ffaac7657b50abae8d0","IPY_MODEL_1d97f55fa8df45f38632c4997c794ca2","IPY_MODEL_b62fc1a54c474e0c8fe57349a618f47c"],"layout":"IPY_MODEL_78bae9a926f94518bcb1aca3ec3be8c9"}},"9f03c407dc594ffaac7657b50abae8d0":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_db9256186b24436b9eaf495cca73b627","placeholder":"","style":"IPY_MODEL_d1a62ffa03614022b9297f4781b01ad1","value":"100%"}},"1d97f55fa8df45f38632c4997c794ca2":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_76b1268583064b7a81e2304254a4423b","max":3,"min":0,"orientation":"horizontal","style":"IPY_MODEL_b9ea0ccab4654c43b1d07f3857c1b357","value":3}},"b62fc1a54c474e0c8fe57349a618f47c":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_5e18cbf866d64bf2b4ca1fa3744326bb","placeholder":"","style":"IPY_MODEL_df6a4f2066874e68b41d567515f79f30","value":" 3/3 [00:00<00:00, 146.57it/s]"}},"78bae9a926f94518bcb1aca3ec3be8c9":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"db9256186b24436b9eaf495cca73b627":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d1a62ffa03614022b9297f4781b01ad1":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"76b1268583064b7a81e2304254a4423b":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b9ea0ccab4654c43b1d07f3857c1b357":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"5e18cbf866d64bf2b4ca1fa3744326bb":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"df6a4f2066874e68b41d567515f79f30":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"2e8c2180648c40c588ab3afe5eaabc50":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_29c92cd07b1842c69840456c878ff9aa","IPY_MODEL_3b46df46cd854b75b4add832fb4a5d5c","IPY_MODEL_e58866173b7d4ab2bc406b1a5c01b74b"],"layout":"IPY_MODEL_4db8a430139c4501bacc5229e1f082b3"}},"29c92cd07b1842c69840456c878ff9aa":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_b1f1b39884cb4c5db69b19bd0add6a9c","placeholder":"","style":"IPY_MODEL_7075e5e4c4df48a38d7e18aa1aed946e","value":"Generating train split: 96%"}},"3b46df46cd854b75b4add832fb4a5d5c":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"","description":"","description_tooltip":null,"layout":"IPY_MODEL_4646986a311a49219b12f64829a1d40f","max":20000,"min":0,"orientation":"horizontal","style":"IPY_MODEL_24962ba13f11459c93924d2be5bbc164","value":20000}},"e58866173b7d4ab2bc406b1a5c01b74b":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_1c1c2a6884404a89804cab03bdc595b4","placeholder":"","style":"IPY_MODEL_953c9766a4e04d309135b4e8f3eb6e04","value":" 19276/20000 [00:02<00:00, 10103.32 examples/s]"}},"4db8a430139c4501bacc5229e1f082b3":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":"hidden","width":null}},"b1f1b39884cb4c5db69b19bd0add6a9c":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"7075e5e4c4df48a38d7e18aa1aed946e":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"4646986a311a49219b12f64829a1d40f":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"24962ba13f11459c93924d2be5bbc164":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"1c1c2a6884404a89804cab03bdc595b4":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"953c9766a4e04d309135b4e8f3eb6e04":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"dc9f3eeb357841538c6234a39ff3394c":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_14124ad253bc4479b665a066e3028563","IPY_MODEL_79454f50b2e8405693c02e4044c9c477","IPY_MODEL_75cb85bbcd4d40f288b20db918f0ae38"],"layout":"IPY_MODEL_b6f0d63680f6452ab6d1c64f4197a685"}},"14124ad253bc4479b665a066e3028563":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_66f19530c4f2471a94cd83f006783018","placeholder":"","style":"IPY_MODEL_49a2728b072848fa97a5c267ede46e2d","value":"Generating validation split: 100%"}},"79454f50b2e8405693c02e4044c9c477":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"","description":"","description_tooltip":null,"layout":"IPY_MODEL_cb1384b48fe4408a9fa1f5bc07823876","max":10000,"min":0,"orientation":"horizontal","style":"IPY_MODEL_8486a17af7a84ea98d57fbfb01ef6bb6","value":10000}},"75cb85bbcd4d40f288b20db918f0ae38":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_eba25eb814764ab59d313c440f3d9195","placeholder":"","style":"IPY_MODEL_19f19423672e4a8caa4e6ae065324323","value":" 10000/10000 [00:01<00:00, 8106.33 examples/s]"}},"b6f0d63680f6452ab6d1c64f4197a685":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":"hidden","width":null}},"66f19530c4f2471a94cd83f006783018":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"49a2728b072848fa97a5c267ede46e2d":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"cb1384b48fe4408a9fa1f5bc07823876":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"8486a17af7a84ea98d57fbfb01ef6bb6":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"eba25eb814764ab59d313c440f3d9195":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"19f19423672e4a8caa4e6ae065324323":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"c9a290e3a6cc494595310142f6816c1e":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_d80e8f64e23143ecb8b73a1f26fa40f7","IPY_MODEL_5169f99419484e96bdd11bf9266dd710","IPY_MODEL_2faa0934682c4340a5235f7fd9730643"],"layout":"IPY_MODEL_07e0ca56e26f42b8a15f32b0dc205aeb"}},"d80e8f64e23143ecb8b73a1f26fa40f7":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_81986143c46e47c5aa865a97b81f36d0","placeholder":"","style":"IPY_MODEL_4ab08dc1ba824db4b8c0cc5544e5c7b2","value":"Generating test split: 100%"}},"5169f99419484e96bdd11bf9266dd710":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"","description":"","description_tooltip":null,"layout":"IPY_MODEL_8fb5b6f8a36a4593a21210abcf9a5e73","max":10000,"min":0,"orientation":"horizontal","style":"IPY_MODEL_5717f2f2f78b40bb957c8cb29def22db","value":10000}},"2faa0934682c4340a5235f7fd9730643":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_a1040ae0475b4f53a5abcca55c414772","placeholder":"","style":"IPY_MODEL_5f52a79dca5944c08fb04e9a1b141531","value":" 9969/10000 [00:01<00:00, 9537.31 examples/s]"}},"07e0ca56e26f42b8a15f32b0dc205aeb":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":"hidden","width":null}},"81986143c46e47c5aa865a97b81f36d0":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"4ab08dc1ba824db4b8c0cc5544e5c7b2":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"8fb5b6f8a36a4593a21210abcf9a5e73":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"5717f2f2f78b40bb957c8cb29def22db":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"a1040ae0475b4f53a5abcca55c414772":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"5f52a79dca5944c08fb04e9a1b141531":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"ae117bea6d4847c4aa9cfc9882ac6cc0":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_54da2f080e53433298f21b223ed31640","IPY_MODEL_4f0ea89ad4de45ccbc7aa5785c86e6f9","IPY_MODEL_65aeaff82abe493c842e740c26731ab7"],"layout":"IPY_MODEL_1b9d54a916e4415b810e420c3e44a663"}},"54da2f080e53433298f21b223ed31640":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_73f5868d1c7e46e2a4f16025b9e34627","placeholder":"","style":"IPY_MODEL_7635559557334366b5150c52865c6fa9","value":"100%"}},"4f0ea89ad4de45ccbc7aa5785c86e6f9":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_c1f26a9477c54169bb9110d550bfbbf8","max":3,"min":0,"orientation":"horizontal","style":"IPY_MODEL_c191f19748bb45eebecc3f1063b94b8a","value":3}},"65aeaff82abe493c842e740c26731ab7":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_4f15b85b07cd466f9c5d1d2b6f42f4f4","placeholder":"","style":"IPY_MODEL_36ffa644509c4e1a9c7234801a00edac","value":" 3/3 [00:00<00:00, 113.92it/s]"}},"1b9d54a916e4415b810e420c3e44a663":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"73f5868d1c7e46e2a4f16025b9e34627":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"7635559557334366b5150c52865c6fa9":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"c1f26a9477c54169bb9110d550bfbbf8":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"c191f19748bb45eebecc3f1063b94b8a":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"4f15b85b07cd466f9c5d1d2b6f42f4f4":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"36ffa644509c4e1a9c7234801a00edac":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"211d525aa2814de2b0559e0dba68865f":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_1486435bca7f495fa811be4138aba46a","IPY_MODEL_32a958e5606945f3804b1a846ae17e9a","IPY_MODEL_01b0dbf5c17a4adb8019f9d012430c92"],"layout":"IPY_MODEL_5bcdcf410d0e418b83d645a0f514e1fd"}},"1486435bca7f495fa811be4138aba46a":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_40371b8e54db4d1ea5c8851b7d353943","placeholder":"","style":"IPY_MODEL_9b3a23f11be043f0ad9d9a4ff7876167","value":"100%"}},"32a958e5606945f3804b1a846ae17e9a":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_0b837815453b420ea0eccfec7293a5f3","max":12580,"min":0,"orientation":"horizontal","style":"IPY_MODEL_e981c54d25834d029685877830f3469d","value":12580}},"01b0dbf5c17a4adb8019f9d012430c92":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_3d953ad6dff14d268a8537ff39c19bd3","placeholder":"","style":"IPY_MODEL_d0ba5d92c8c04a61b6a92e73b81af2b2","value":" 12580/12580 [00:01<00:00, 8259.68ex/s]"}},"5bcdcf410d0e418b83d645a0f514e1fd":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"40371b8e54db4d1ea5c8851b7d353943":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"9b3a23f11be043f0ad9d9a4ff7876167":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"0b837815453b420ea0eccfec7293a5f3":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e981c54d25834d029685877830f3469d":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"3d953ad6dff14d268a8537ff39c19bd3":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d0ba5d92c8c04a61b6a92e73b81af2b2":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"a90a1575956d471f8150a7585033ae18":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_a3729075e35a425b90da9a04ccf385d3","IPY_MODEL_c737f90a71504bdfa60c6b64b767735c","IPY_MODEL_36fe20b170df4c698e4c36346a3f0766"],"layout":"IPY_MODEL_6d67aeddb4674c2195669854c0dc547a"}},"a3729075e35a425b90da9a04ccf385d3":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_302aa0a2e6d84a07a2d3d1af5894e6be","placeholder":"","style":"IPY_MODEL_88c7be98258f4de48094f21a21e21832","value":"100%"}},"c737f90a71504bdfa60c6b64b767735c":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_42c8625242a244f6b93f54ddbb7f2fe2","max":6290,"min":0,"orientation":"horizontal","style":"IPY_MODEL_46f5749cbb4644bdbd38becc552e3259","value":6290}},"36fe20b170df4c698e4c36346a3f0766":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_0e1811d3227849ddb8f855d7079e675b","placeholder":"","style":"IPY_MODEL_cb2f805494394845aff0fb4e567fef50","value":" 6290/6290 [00:00<00:00, 8830.13ex/s]"}},"6d67aeddb4674c2195669854c0dc547a":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"302aa0a2e6d84a07a2d3d1af5894e6be":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"88c7be98258f4de48094f21a21e21832":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"42c8625242a244f6b93f54ddbb7f2fe2":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"46f5749cbb4644bdbd38becc552e3259":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"0e1811d3227849ddb8f855d7079e675b":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"cb2f805494394845aff0fb4e567fef50":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"e09e8e70bbb44f32b63f38f94066b47d":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_2085200a95a248a79e0ce40d4b96f476","IPY_MODEL_d5d1e64b89a74cc0b4133b7dbf462676","IPY_MODEL_3d04d7c1e2f547a981d78ec01746f7c0"],"layout":"IPY_MODEL_10ed85fdb5614fe9a88e419f158a7f41"}},"2085200a95a248a79e0ce40d4b96f476":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_a7d15fc1f337473980bb5135ef18cf2b","placeholder":"","style":"IPY_MODEL_c6643cdb310c45fd8dcf25afdb9084cc","value":"100%"}},"d5d1e64b89a74cc0b4133b7dbf462676":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_3d1cd8e019d34762b3dd4062b434649d","max":6290,"min":0,"orientation":"horizontal","style":"IPY_MODEL_d39c7ae79ba84ed0bfe6e6e0a24f21af","value":6290}},"3d04d7c1e2f547a981d78ec01746f7c0":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_0ef37e041b0047f4ad5c5c1aec14cbb4","placeholder":"","style":"IPY_MODEL_cdac238f7cf445cc84041d7302624626","value":" 6290/6290 [00:00<00:00, 6601.01ex/s]"}},"10ed85fdb5614fe9a88e419f158a7f41":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"a7d15fc1f337473980bb5135ef18cf2b":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"c6643cdb310c45fd8dcf25afdb9084cc":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"3d1cd8e019d34762b3dd4062b434649d":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d39c7ae79ba84ed0bfe6e6e0a24f21af":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"0ef37e041b0047f4ad5c5c1aec14cbb4":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"cdac238f7cf445cc84041d7302624626":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"f1f69f016e5f4d179fc1a3a3639e194f":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_4f5da1ad913e472c9d77e1cdc4f8e2b6","IPY_MODEL_ebd7b36421f948439548e7903ed81ee6","IPY_MODEL_96f5ba8063074c748b250f3d38de52f2"],"layout":"IPY_MODEL_31ddd298f1894a069583d6d93d2e45eb"}},"4f5da1ad913e472c9d77e1cdc4f8e2b6":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_2ead4e84970946d9859ce37da2175d3e","placeholder":"","style":"IPY_MODEL_acd513b021d24cd4b127755190f90302","value":"Downloading (…)okenizer_config.json: 100%"}},"ebd7b36421f948439548e7903ed81ee6":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_016e44c2b25545e693c1a316ad17deaf","max":29,"min":0,"orientation":"horizontal","style":"IPY_MODEL_4185518d566c42468315e518bf9fcfe7","value":29}},"96f5ba8063074c748b250f3d38de52f2":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_0ed70f7d08fa49819bb9c60eafaec297","placeholder":"","style":"IPY_MODEL_0644205b912848a7a7f77830b7258223","value":" 29.0/29.0 [00:00<00:00, 1.32kB/s]"}},"31ddd298f1894a069583d6d93d2e45eb":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"2ead4e84970946d9859ce37da2175d3e":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"acd513b021d24cd4b127755190f90302":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"016e44c2b25545e693c1a316ad17deaf":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"4185518d566c42468315e518bf9fcfe7":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"0ed70f7d08fa49819bb9c60eafaec297":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"0644205b912848a7a7f77830b7258223":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"94f51cdae0494f0dbcf0b341047c90dc":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_efa3383f5b524d56ae509f4d8e278d22","IPY_MODEL_fb036d925be044438f01290f948f8e02","IPY_MODEL_8365cc260cba472d85e6a02ded253ca1"],"layout":"IPY_MODEL_0e2d034462e94a178aa4cfa54343bc69"}},"efa3383f5b524d56ae509f4d8e278d22":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_8c91896dddd142b1996ab976b14cc1c7","placeholder":"","style":"IPY_MODEL_d582d329ca4449349a6e08e11ac7d25c","value":"Downloading (…)lve/main/config.json: 100%"}},"fb036d925be044438f01290f948f8e02":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_c71c37c8c3f443f88c38d94ba7a597c7","max":570,"min":0,"orientation":"horizontal","style":"IPY_MODEL_00e0165acad84074a1b02f60b8993d8c","value":570}},"8365cc260cba472d85e6a02ded253ca1":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_345a8b6eefe348de982f2fe100e4b94c","placeholder":"","style":"IPY_MODEL_57553ee721924d69b2846ab8a05e4305","value":" 570/570 [00:00<00:00, 28.1kB/s]"}},"0e2d034462e94a178aa4cfa54343bc69":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"8c91896dddd142b1996ab976b14cc1c7":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d582d329ca4449349a6e08e11ac7d25c":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"c71c37c8c3f443f88c38d94ba7a597c7":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"00e0165acad84074a1b02f60b8993d8c":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"345a8b6eefe348de982f2fe100e4b94c":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"57553ee721924d69b2846ab8a05e4305":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"4604e0047d924a839e969b1f219a8d5e":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_c24a2e3f6fa842b6ac52996933480550","IPY_MODEL_5ee0e7b975c74d4cbdc765e7d82e2ef0","IPY_MODEL_de8687af54af49b99a3f05ec8654c83d"],"layout":"IPY_MODEL_89139f8f31c846c48a3d0b329b881bde"}},"c24a2e3f6fa842b6ac52996933480550":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_33cd59f8716d4f7ea40821c7774a38fa","placeholder":"","style":"IPY_MODEL_2e793a8f212a427186a427b54c00fe33","value":"Downloading (…)solve/main/vocab.txt: 100%"}},"5ee0e7b975c74d4cbdc765e7d82e2ef0":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_6a6f5218d1c54be7a30777ceb4fd6b00","max":213450,"min":0,"orientation":"horizontal","style":"IPY_MODEL_85f8bbb7d8b24b5a95c7fb674d6cb43a","value":213450}},"de8687af54af49b99a3f05ec8654c83d":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_60207316f72e435f9266225c5f6fbc19","placeholder":"","style":"IPY_MODEL_ff8103828112408cbf16c5c6d13b2a33","value":" 213k/213k [00:00<00:00, 383kB/s]"}},"89139f8f31c846c48a3d0b329b881bde":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"33cd59f8716d4f7ea40821c7774a38fa":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"2e793a8f212a427186a427b54c00fe33":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"6a6f5218d1c54be7a30777ceb4fd6b00":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"85f8bbb7d8b24b5a95c7fb674d6cb43a":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"60207316f72e435f9266225c5f6fbc19":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ff8103828112408cbf16c5c6d13b2a33":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"f753628d026a471a8b6f7987011dfe91":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_670b05b90bdf4587beb6a9e1b3f998e8","IPY_MODEL_8b91d4f194844d68bd81acd3438b7ba2","IPY_MODEL_07e98f59b8fb4ffe9c21f62f2e1b3ae5"],"layout":"IPY_MODEL_6ccf052943204fb7be8c2a2987237148"}},"670b05b90bdf4587beb6a9e1b3f998e8":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_d94df671dfa14c02bac4f12819c0748e","placeholder":"","style":"IPY_MODEL_d9978751d44d486b8d99c812088d29ce","value":"Downloading (…)/main/tokenizer.json: 100%"}},"8b91d4f194844d68bd81acd3438b7ba2":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_c9dfffd412d045a283e46566158deee7","max":435797,"min":0,"orientation":"horizontal","style":"IPY_MODEL_69e2116a570c4b61b55b7dd7ff0545e7","value":435797}},"07e98f59b8fb4ffe9c21f62f2e1b3ae5":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_b991d0341ba748a5a86e36682c350a10","placeholder":"","style":"IPY_MODEL_098f8beefedf487e8e620a33e5b4873d","value":" 436k/436k [00:00<00:00, 574kB/s]"}},"6ccf052943204fb7be8c2a2987237148":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d94df671dfa14c02bac4f12819c0748e":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d9978751d44d486b8d99c812088d29ce":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"c9dfffd412d045a283e46566158deee7":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"69e2116a570c4b61b55b7dd7ff0545e7":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"b991d0341ba748a5a86e36682c350a10":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"098f8beefedf487e8e620a33e5b4873d":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"5bfc16d5cd14405d969e20261f913e40":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_2ddc82fde5284c5fa22e80a1ded0c4de","IPY_MODEL_0090c677db7045df9b5ce4935468b238","IPY_MODEL_9f9f9d032e9c468990f61a9769620a6d"],"layout":"IPY_MODEL_332ea6b461d744bdaf2edbf3048d80ea"}},"2ddc82fde5284c5fa22e80a1ded0c4de":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_fdcfc65469e04a4baef6def0234b3884","placeholder":"","style":"IPY_MODEL_021e8ac000564e9692aa09f083f36704","value":"Downloading (…)lve/main/config.json: 100%"}},"0090c677db7045df9b5ce4935468b238":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_dab4bb5c9bd44bff9e91421be0977990","max":615,"min":0,"orientation":"horizontal","style":"IPY_MODEL_6d7f64577b9c48a8848a84dfded91fe4","value":615}},"9f9f9d032e9c468990f61a9769620a6d":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_9d602ef4136d43f0a5b6beee8555a3bb","placeholder":"","style":"IPY_MODEL_bc060a9491da4500b6279c7e4f8880e3","value":" 615/615 [00:00<00:00, 13.8kB/s]"}},"332ea6b461d744bdaf2edbf3048d80ea":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"fdcfc65469e04a4baef6def0234b3884":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"021e8ac000564e9692aa09f083f36704":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"dab4bb5c9bd44bff9e91421be0977990":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6d7f64577b9c48a8848a84dfded91fe4":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"9d602ef4136d43f0a5b6beee8555a3bb":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"bc060a9491da4500b6279c7e4f8880e3":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"80d6515bf0e145c189303a631f4ea08f":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_801affdca836427988a60f8d21deda58","IPY_MODEL_f83ba0cbd9cc4a1588c7e76b43f068c0","IPY_MODEL_e1b3263abf434c8d94b02b0be45f9434"],"layout":"IPY_MODEL_d97430ac276e4589b503b90886cb8a00"}},"801affdca836427988a60f8d21deda58":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_df18f7c7b94a40ae828ea9eac0a60b34","placeholder":"","style":"IPY_MODEL_925a4454e6e449218c42585198563cbf","value":"Downloading (…)tencepiece.bpe.model: 100%"}},"f83ba0cbd9cc4a1588c7e76b43f068c0":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_55df9e5858dd4284b40482ebfa346142","max":5069051,"min":0,"orientation":"horizontal","style":"IPY_MODEL_e90cebb0049341fdb70f11727cbf5e79","value":5069051}},"e1b3263abf434c8d94b02b0be45f9434":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_1d630e8957ad45728b9a539d32692cc1","placeholder":"","style":"IPY_MODEL_f4ca2927907243ffa08b2baa44941069","value":" 5.07M/5.07M [00:01<00:00, 3.44MB/s]"}},"d97430ac276e4589b503b90886cb8a00":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"df18f7c7b94a40ae828ea9eac0a60b34":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"925a4454e6e449218c42585198563cbf":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"55df9e5858dd4284b40482ebfa346142":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e90cebb0049341fdb70f11727cbf5e79":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"1d630e8957ad45728b9a539d32692cc1":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"f4ca2927907243ffa08b2baa44941069":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"d1fd8e9e28984643b4f55abd35f77840":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_123eb17fe6c243688872a572c2cc88ec","IPY_MODEL_8cac781872fb407facc613e411f8d0c4","IPY_MODEL_fc3d29bb3e2d42a696a2b51aa9e19459"],"layout":"IPY_MODEL_784055e398204ce8a9029852e73ef5bd"}},"123eb17fe6c243688872a572c2cc88ec":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_bab93cded8a045f299b7374306048456","placeholder":"","style":"IPY_MODEL_914f3a746bd547f9a951132454e7818a","value":"Downloading (…)/main/tokenizer.json: 100%"}},"8cac781872fb407facc613e411f8d0c4":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_c8d7f27575f1400a932be83e3b2c2e07","max":9096718,"min":0,"orientation":"horizontal","style":"IPY_MODEL_e4b4b462d7af44efa4be4c8e1259da99","value":9096718}},"fc3d29bb3e2d42a696a2b51aa9e19459":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_a4017fc65bb64bb391f7f90fcad7629c","placeholder":"","style":"IPY_MODEL_686bc45dd1384f158656a37caa5e4563","value":" 9.10M/9.10M [00:01<00:00, 5.49MB/s]"}},"784055e398204ce8a9029852e73ef5bd":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"bab93cded8a045f299b7374306048456":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"914f3a746bd547f9a951132454e7818a":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"c8d7f27575f1400a932be83e3b2c2e07":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e4b4b462d7af44efa4be4c8e1259da99":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"a4017fc65bb64bb391f7f90fcad7629c":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"686bc45dd1384f158656a37caa5e4563":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"ee35beb51277432a80c6c507ea941e81":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_9977e174493d4522b4ad8643c0a7b534","IPY_MODEL_1ba89974c87e4c6a818f6a85c03b55c8","IPY_MODEL_96861e3ec0124949a8dfbbd9a3f8ae4d"],"layout":"IPY_MODEL_52f2ce5e3e4246b8a503b21ad531e9ed"}},"9977e174493d4522b4ad8643c0a7b534":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_5d26e3b64c4444f3a772c33f95906e7e","placeholder":"","style":"IPY_MODEL_42c224b56c9c4b548abd21c97122ad41","value":"Downloading (…)"pytorch_model.bin";: 100%"}},"1ba89974c87e4c6a818f6a85c03b55c8":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_e8c85c704de8418eb3363b8ad9a6146c","max":1115590446,"min":0,"orientation":"horizontal","style":"IPY_MODEL_e8eb5682d2334e1d8833a209f2dbd826","value":1115590446}},"96861e3ec0124949a8dfbbd9a3f8ae4d":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_464ca3b6b1694d93becbabba2bc5f2e6","placeholder":"","style":"IPY_MODEL_11c5f0454f774718a6d4efb4ba63cae7","value":" 1.12G/1.12G [00:13<00:00, 90.0MB/s]"}},"52f2ce5e3e4246b8a503b21ad531e9ed":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"5d26e3b64c4444f3a772c33f95906e7e":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"42c224b56c9c4b548abd21c97122ad41":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"e8c85c704de8418eb3363b8ad9a6146c":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e8eb5682d2334e1d8833a209f2dbd826":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"464ca3b6b1694d93becbabba2bc5f2e6":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"11c5f0454f774718a6d4efb4ba63cae7":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"0bf41f331c6347ce8234765a9fcafec9":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_2692a1f9e28f4c64a1a4fd2550891c13","IPY_MODEL_4148c5ec326741988d19b1d8d0267a0b","IPY_MODEL_df6cd3aa244640d2a78b48112e80bccb"],"layout":"IPY_MODEL_8de43e7ba0a642c3adf25b2638faa5d5"}},"2692a1f9e28f4c64a1a4fd2550891c13":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_c382f6836bbd400b858ea39956e2e5db","placeholder":"","style":"IPY_MODEL_48aa12534f9843e3bbf5921c28653b58","value":"100%"}},"4148c5ec326741988d19b1d8d0267a0b":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_d4c1121465e2434a8892e778a06942b3","max":13,"min":0,"orientation":"horizontal","style":"IPY_MODEL_1ed3f14248cd455b91a76bd2aa11889f","value":13}},"df6cd3aa244640d2a78b48112e80bccb":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_a9b1f253f089466d96411c9e7562df44","placeholder":"","style":"IPY_MODEL_8a43e1fa5c354852b8218c5e8db69fb6","value":" 13/13 [00:01<00:00, 12.16ba/s]"}},"8de43e7ba0a642c3adf25b2638faa5d5":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"c382f6836bbd400b858ea39956e2e5db":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"48aa12534f9843e3bbf5921c28653b58":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"d4c1121465e2434a8892e778a06942b3":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"1ed3f14248cd455b91a76bd2aa11889f":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"a9b1f253f089466d96411c9e7562df44":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"8a43e1fa5c354852b8218c5e8db69fb6":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"1c0d5ec20f0d42c6ad7fa2885c9be26c":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_7dece95e5cff46e282161be507beead5","IPY_MODEL_b32512787c384ba682b283f5208eae16","IPY_MODEL_92f6ba0adb9b44d5b4162c4ba62a02b4"],"layout":"IPY_MODEL_e04c275119b64865bfd35e99aabee6d1"}},"7dece95e5cff46e282161be507beead5":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_afe3bdd6130d47fba48a2841ef258e04","placeholder":"","style":"IPY_MODEL_4ac033289560420ab03259fb6ffd20b1","value":"100%"}},"b32512787c384ba682b283f5208eae16":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_10e064dff423490ca81202ace809a920","max":7,"min":0,"orientation":"horizontal","style":"IPY_MODEL_ab51d2a5d4e64ab8839ee72a5005d2e4","value":7}},"92f6ba0adb9b44d5b4162c4ba62a02b4":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_62201e8a763a4c07bf742defdf11deb3","placeholder":"","style":"IPY_MODEL_c2f406629c894c3ab7d1ab0c573de517","value":" 7/7 [00:00<00:00, 13.81ba/s]"}},"e04c275119b64865bfd35e99aabee6d1":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"afe3bdd6130d47fba48a2841ef258e04":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"4ac033289560420ab03259fb6ffd20b1":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"10e064dff423490ca81202ace809a920":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ab51d2a5d4e64ab8839ee72a5005d2e4":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"62201e8a763a4c07bf742defdf11deb3":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"c2f406629c894c3ab7d1ab0c573de517":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"0dbf0628de1a4e17a020f36300fd0bb9":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_96f57e7e3c4c4b16b4c1d4668a9458fc","IPY_MODEL_5a6cd25a886d4a728eb5bedbfa77d991","IPY_MODEL_bc2b0a8fcd8347acbbc58154d21c7b3f"],"layout":"IPY_MODEL_c279a65ea1944618b945a9810ca3043f"}},"96f57e7e3c4c4b16b4c1d4668a9458fc":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_c1603434742540d48ab49ec46046c0f0","placeholder":"","style":"IPY_MODEL_e81dbce463ea47cc9f5bee10ffbb4def","value":"100%"}},"5a6cd25a886d4a728eb5bedbfa77d991":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_933e4839e16f4bd8a87c246634bf1173","max":7,"min":0,"orientation":"horizontal","style":"IPY_MODEL_8d12cf18d4414d538ce8c242299c93b3","value":7}},"bc2b0a8fcd8347acbbc58154d21c7b3f":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_d4c960f718754d26b339d4e11371409f","placeholder":"","style":"IPY_MODEL_60342e3d9d264b76bcedb75e75606b89","value":" 7/7 [00:00<00:00, 13.76ba/s]"}},"c279a65ea1944618b945a9810ca3043f":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"c1603434742540d48ab49ec46046c0f0":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e81dbce463ea47cc9f5bee10ffbb4def":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"933e4839e16f4bd8a87c246634bf1173":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"8d12cf18d4414d538ce8c242299c93b3":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"d4c960f718754d26b339d4e11371409f":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"60342e3d9d264b76bcedb75e75606b89":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"4cc6e9d90ff749db80a80877c4ceb88b":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_898cd3c6298d42dc9d0bd51adcee9069","IPY_MODEL_c3597b8ec6734c35b028daea5e4a3bbb","IPY_MODEL_31d42d93cd534bb09fc0d962b63ae09e"],"layout":"IPY_MODEL_84ef7a7c8fc342d48da529843f65f2fa"}},"898cd3c6298d42dc9d0bd51adcee9069":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_e1fadba579f04906bcf21ff823e366f9","placeholder":"","style":"IPY_MODEL_b9c6e83d7b8f4ec48de17c75776fbf59","value":"100%"}},"c3597b8ec6734c35b028daea5e4a3bbb":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_17d21e082a4e460c956158a271ad48ee","max":197,"min":0,"orientation":"horizontal","style":"IPY_MODEL_42c79b0e7b364da98319a4cd8522eb13","value":197}},"31d42d93cd534bb09fc0d962b63ae09e":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_fbe1408c5e624cc9becac343bcbdfff0","placeholder":"","style":"IPY_MODEL_0a17783cd6264c85b3d75c6cbfc189b3","value":" 197/197 [00:16<00:00, 11.71ba/s]"}},"84ef7a7c8fc342d48da529843f65f2fa":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e1fadba579f04906bcf21ff823e366f9":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b9c6e83d7b8f4ec48de17c75776fbf59":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"17d21e082a4e460c956158a271ad48ee":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"42c79b0e7b364da98319a4cd8522eb13":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"fbe1408c5e624cc9becac343bcbdfff0":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"0a17783cd6264c85b3d75c6cbfc189b3":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"2ea4ca5a4cae4e34a6110d3e9d88c651":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_91bda3f45e6c4e85a09ed28d5289c696","IPY_MODEL_bfd5babd9bc84ddfa5c6128295166523","IPY_MODEL_68fb9a2ada674f3d86c8af1f8ca42294"],"layout":"IPY_MODEL_4ea838d6f2f045ff9aa15422ded0e4c9"}},"91bda3f45e6c4e85a09ed28d5289c696":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_bb67aae5d54d42c699ccbbc7d3e3d55b","placeholder":"","style":"IPY_MODEL_c7c6dae6f18c471c97c554070b51bc4c","value":"100%"}},"bfd5babd9bc84ddfa5c6128295166523":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_9db304751d0a4e25bca672129340ac4a","max":5,"min":0,"orientation":"horizontal","style":"IPY_MODEL_4e6377999bcd45fd947ffff3204aa56b","value":5}},"68fb9a2ada674f3d86c8af1f8ca42294":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_2247badab8cd4517bcf9e31b1d5714da","placeholder":"","style":"IPY_MODEL_cd6a61a9d1ea402e976ed526792cd16d","value":" 5/5 [00:00<00:00, 14.10ba/s]"}},"4ea838d6f2f045ff9aa15422ded0e4c9":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"bb67aae5d54d42c699ccbbc7d3e3d55b":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"c7c6dae6f18c471c97c554070b51bc4c":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"9db304751d0a4e25bca672129340ac4a":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"4e6377999bcd45fd947ffff3204aa56b":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"2247badab8cd4517bcf9e31b1d5714da":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"cd6a61a9d1ea402e976ed526792cd16d":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"94ceb13d56594d3f99d3a03abced58cc":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_d99fd5f7c40443678da1082688c42c65","IPY_MODEL_1bd42bc9adbc4857ae37e1c0b0b0b6c5","IPY_MODEL_c1e2a78143484aea8f371e11c69ab6e3"],"layout":"IPY_MODEL_f8b527cfca1742578a268ad2b607a872"}},"d99fd5f7c40443678da1082688c42c65":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_2e16d295cf4e4cbc9d509f9c26e6ee06","placeholder":"","style":"IPY_MODEL_65edf3b8401e47eb96a50a2cdbf9a662","value":"100%"}},"1bd42bc9adbc4857ae37e1c0b0b0b6c5":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_4db9ba3f1aff47a99f307d3d9fa41a6d","max":3,"min":0,"orientation":"horizontal","style":"IPY_MODEL_74dabcf2946a4b6dbf9af8fe2e264ef8","value":3}},"c1e2a78143484aea8f371e11c69ab6e3":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_e2a450d30a654f57a00194b9c59b0419","placeholder":"","style":"IPY_MODEL_eef29186386d49b8a6db1a4cd2b6534c","value":" 3/3 [00:00<00:00, 12.96ba/s]"}},"f8b527cfca1742578a268ad2b607a872":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"2e16d295cf4e4cbc9d509f9c26e6ee06":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"65edf3b8401e47eb96a50a2cdbf9a662":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"4db9ba3f1aff47a99f307d3d9fa41a6d":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"74dabcf2946a4b6dbf9af8fe2e264ef8":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"e2a450d30a654f57a00194b9c59b0419":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"eef29186386d49b8a6db1a4cd2b6534c":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"1a3cfbc170a245b19ffe0fa947628a7e":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_94840fc04ab14cd59fee3dc4c604a2a5","IPY_MODEL_7541382dc9c44afdbfa3f41e3633a0e4","IPY_MODEL_566b0e89a9bc4bb5b238178f8d8ae0a6"],"layout":"IPY_MODEL_9bca7b9835e845a3be6371a04c77ad81"}},"94840fc04ab14cd59fee3dc4c604a2a5":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_edd2a3b1783d48f2be1acfd71f1c8bb4","placeholder":"","style":"IPY_MODEL_90f2604c031b4b279e069ea7d2881c1a","value":"100%"}},"7541382dc9c44afdbfa3f41e3633a0e4":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_24530917c4f54d44a4341f0c84fbab06","max":3,"min":0,"orientation":"horizontal","style":"IPY_MODEL_7b103fd3144f4eb8b733cb65ec51c91f","value":3}},"566b0e89a9bc4bb5b238178f8d8ae0a6":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_4de7e750ea0f407a9b5b205421147d50","placeholder":"","style":"IPY_MODEL_ebd1823852cc4db588f99706e590343a","value":" 3/3 [00:00<00:00, 12.70ba/s]"}},"9bca7b9835e845a3be6371a04c77ad81":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"edd2a3b1783d48f2be1acfd71f1c8bb4":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"90f2604c031b4b279e069ea7d2881c1a":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"24530917c4f54d44a4341f0c84fbab06":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"7b103fd3144f4eb8b733cb65ec51c91f":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"4de7e750ea0f407a9b5b205421147d50":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ebd1823852cc4db588f99706e590343a":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"195e10dbbb5b48ab9e398a66758dde13":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_d35d0b468d914833a56e4fcd52aca4e8","IPY_MODEL_d146b5d96e45412d97f5079b140930e6","IPY_MODEL_4461809827d74d86ad4eedb80d42942d"],"layout":"IPY_MODEL_ba555485343d4f399028b953501f71ed"}},"d35d0b468d914833a56e4fcd52aca4e8":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_f96d049dddc142e78dbc2d63de5f8901","placeholder":"","style":"IPY_MODEL_69080edf86894d588459022e04b3a423","value":"100%"}},"d146b5d96e45412d97f5079b140930e6":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_71116a1c3046472ebd41de2a251c9b4f","max":2,"min":0,"orientation":"horizontal","style":"IPY_MODEL_c109c485393a4ca0873a72868a39936c","value":2}},"4461809827d74d86ad4eedb80d42942d":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_5af63ad216444ffbbbcd529af95cb22b","placeholder":"","style":"IPY_MODEL_635fc65327a5438594ce1473362e8200","value":" 2/2 [00:00<00:00, 13.51ba/s]"}},"ba555485343d4f399028b953501f71ed":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"f96d049dddc142e78dbc2d63de5f8901":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"69080edf86894d588459022e04b3a423":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"71116a1c3046472ebd41de2a251c9b4f":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"c109c485393a4ca0873a72868a39936c":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"5af63ad216444ffbbbcd529af95cb22b":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"635fc65327a5438594ce1473362e8200":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"930adae80e9d4e9999acee0c4fc323e4":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_56d8530176d140c19704c0bd74613441","IPY_MODEL_90f26840fb2c46448d33fcea56bad086","IPY_MODEL_64a431cd1ace4a6f94a07a6a5cb703a6"],"layout":"IPY_MODEL_b310cb126eb7460cb424ac80ffded79e"}},"56d8530176d140c19704c0bd74613441":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_9701bf14e9784508bb3f12295aba919e","placeholder":"","style":"IPY_MODEL_235ace930bb44693b9fe92a781bcf376","value":"100%"}},"90f26840fb2c46448d33fcea56bad086":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_197ebb4e52f24882af7bd0d39095aea6","max":1,"min":0,"orientation":"horizontal","style":"IPY_MODEL_60908eeb9bad47ad9165e195b2cf92f9","value":1}},"64a431cd1ace4a6f94a07a6a5cb703a6":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_08d772af60f6440a802b0b412b287698","placeholder":"","style":"IPY_MODEL_e9de5adfeec2456fbb81305ecd597480","value":" 1/1 [00:00<00:00, 9.32ba/s]"}},"b310cb126eb7460cb424ac80ffded79e":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"9701bf14e9784508bb3f12295aba919e":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"235ace930bb44693b9fe92a781bcf376":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"197ebb4e52f24882af7bd0d39095aea6":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"60908eeb9bad47ad9165e195b2cf92f9":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"08d772af60f6440a802b0b412b287698":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e9de5adfeec2456fbb81305ecd597480":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"eacf66ae9ce54d368c4418c72c421860":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_aa3195e2c70d4e709cdcf50c49e8dca4","IPY_MODEL_6ad96368e58c43b688eb5d41df83878f","IPY_MODEL_31dcedf6b7d34474a5bd0f95ddb6837c"],"layout":"IPY_MODEL_fa1d95ea5db140a1b8f79ff4ad1f9773"}},"aa3195e2c70d4e709cdcf50c49e8dca4":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_438c35fceffa4c0e96151cc1e28ac273","placeholder":"","style":"IPY_MODEL_0ca091f5848644c189ed0c13be310b0e","value":"100%"}},"6ad96368e58c43b688eb5d41df83878f":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_0e6981685a534d8a9577361131ed4b5e","max":1,"min":0,"orientation":"horizontal","style":"IPY_MODEL_b8831dc27dbe4052b94d94c214ca947e","value":1}},"31dcedf6b7d34474a5bd0f95ddb6837c":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_61447819912d4ff399f1e411dbce3229","placeholder":"","style":"IPY_MODEL_36933e871b114325836b7a7f5d3408ca","value":" 1/1 [00:00<00:00, 10.66ba/s]"}},"fa1d95ea5db140a1b8f79ff4ad1f9773":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"438c35fceffa4c0e96151cc1e28ac273":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"0ca091f5848644c189ed0c13be310b0e":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"0e6981685a534d8a9577361131ed4b5e":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b8831dc27dbe4052b94d94c214ca947e":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"61447819912d4ff399f1e411dbce3229":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"36933e871b114325836b7a7f5d3408ca":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"30c6a6fbd2944377ace47d48bc4a4aea":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_6af4cd75f04b4a6abed43abd8f3b30a3","IPY_MODEL_dbf5ba978d06434ab1910c2f8e932f48","IPY_MODEL_a18cc967159849caac2877ce9b3dc6a2"],"layout":"IPY_MODEL_66200da357d74e4fb357f1f561d01cad"}},"6af4cd75f04b4a6abed43abd8f3b30a3":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_0f439a2b3fba46f3a60f1ca4762becee","placeholder":"","style":"IPY_MODEL_472c551e7eba4817affcb192af57e973","value":"100%"}},"dbf5ba978d06434ab1910c2f8e932f48":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_1822ae06b53641028266009060997372","max":5,"min":0,"orientation":"horizontal","style":"IPY_MODEL_c2bc8eb70e324e83906f1990f9033cad","value":5}},"a18cc967159849caac2877ce9b3dc6a2":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_3b0af0519c10406ea44b7f4bb812f6a1","placeholder":"","style":"IPY_MODEL_92da5753833b4007b2194cbe6715c4ff","value":" 5/5 [00:00<00:00, 13.30ba/s]"}},"66200da357d74e4fb357f1f561d01cad":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"0f439a2b3fba46f3a60f1ca4762becee":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"472c551e7eba4817affcb192af57e973":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"1822ae06b53641028266009060997372":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"c2bc8eb70e324e83906f1990f9033cad":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"3b0af0519c10406ea44b7f4bb812f6a1":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"92da5753833b4007b2194cbe6715c4ff":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"40ee5833271c494cb982535613847865":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_9cd43cf140984ac594dc4449ea856e1a","IPY_MODEL_d2656be4605a408b8960d620155d6872","IPY_MODEL_40c9c94449694fbbaf08b0a4da3a2470"],"layout":"IPY_MODEL_5fa3437f023c44d3887654afac5164f6"}},"9cd43cf140984ac594dc4449ea856e1a":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_5ee625774f254d7bbfdb58fc2b88c032","placeholder":"","style":"IPY_MODEL_6e949eae282e4fcfb12a5fa8f678b3f8","value":"100%"}},"d2656be4605a408b8960d620155d6872":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_aca5de1935654297aa171b16d4ae2117","max":13,"min":0,"orientation":"horizontal","style":"IPY_MODEL_8ada8e3b825043589a33076d479fa97a","value":13}},"40c9c94449694fbbaf08b0a4da3a2470":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_33cc02879cb148b998f9da0fff984862","placeholder":"","style":"IPY_MODEL_b1a1ce3dadb3403bb8c20f2ca16e3513","value":" 13/13 [00:00<00:00, 13.00ba/s]"}},"5fa3437f023c44d3887654afac5164f6":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"5ee625774f254d7bbfdb58fc2b88c032":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6e949eae282e4fcfb12a5fa8f678b3f8":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"aca5de1935654297aa171b16d4ae2117":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"8ada8e3b825043589a33076d479fa97a":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"33cc02879cb148b998f9da0fff984862":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b1a1ce3dadb3403bb8c20f2ca16e3513":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"323822f38a9e48a0b69b9e72713ad9fd":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_5b58cd19a040458785de40b350d0a0a2","IPY_MODEL_afb03e48c9a64e459182c7969105d693","IPY_MODEL_0f3f7f44d66a40ccb0c4c0d409aceff1"],"layout":"IPY_MODEL_78d9f1251e3f43368ef4400057df0e9c"}},"5b58cd19a040458785de40b350d0a0a2":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_f475fece0cc94fc3875d60e697b712f9","placeholder":"","style":"IPY_MODEL_be5245964f2f496792d8513dbd681e42","value":"100%"}},"afb03e48c9a64e459182c7969105d693":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_2d428917487c4f18abc84819b6ddbcde","max":7,"min":0,"orientation":"horizontal","style":"IPY_MODEL_6a24b1cebe05436da45963e95550b673","value":7}},"0f3f7f44d66a40ccb0c4c0d409aceff1":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_d14809e23834488fb4f2a385f0bb03c1","placeholder":"","style":"IPY_MODEL_c992e5f51eb94d079c00d433f819606f","value":" 7/7 [00:00<00:00, 7.58ba/s]"}},"78d9f1251e3f43368ef4400057df0e9c":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"f475fece0cc94fc3875d60e697b712f9":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"be5245964f2f496792d8513dbd681e42":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"2d428917487c4f18abc84819b6ddbcde":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6a24b1cebe05436da45963e95550b673":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"d14809e23834488fb4f2a385f0bb03c1":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"c992e5f51eb94d079c00d433f819606f":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"d6c483f1f2a74e0b88a864e9524a52f6":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_4894b9cf2ee5495bafa58b8e78af5497","IPY_MODEL_90c9e7c500534b758f21b5a9567252c6","IPY_MODEL_1dfee2d2e19c40e0b5606e01a4f1b1ac"],"layout":"IPY_MODEL_5207663a59f642c9935f742990337395"}},"4894b9cf2ee5495bafa58b8e78af5497":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_521599d1ca3047fbb6736a55a84386a7","placeholder":"","style":"IPY_MODEL_345d1df57cd347979e56b8434bbe9579","value":"100%"}},"90c9e7c500534b758f21b5a9567252c6":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_700d93168336461a9b5c221f06b778a4","max":7,"min":0,"orientation":"horizontal","style":"IPY_MODEL_a0e796962708476a8d43898e8f9e7eb4","value":7}},"1dfee2d2e19c40e0b5606e01a4f1b1ac":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_b54b5dd342c147a98f0c859f3e80d807","placeholder":"","style":"IPY_MODEL_ea15d48dae7d4f3f810df52a2c445966","value":" 7/7 [00:00<00:00, 11.28ba/s]"}},"5207663a59f642c9935f742990337395":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"521599d1ca3047fbb6736a55a84386a7":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"345d1df57cd347979e56b8434bbe9579":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"700d93168336461a9b5c221f06b778a4":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"a0e796962708476a8d43898e8f9e7eb4":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"b54b5dd342c147a98f0c859f3e80d807":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ea15d48dae7d4f3f810df52a2c445966":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}}}},"accelerator":"GPU","gpuClass":"standard"},"cells":[{"cell_type":"code","execution_count":1,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"vGnuVcCOuhBB","executionInfo":{"status":"ok","timestamp":1675820959695,"user_tz":-540,"elapsed":7728,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"04a67217-0b9a-426a-f592-5ed1ad77521d"},"outputs":[{"output_type":"stream","name":"stdout","text":["Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n","Requirement already satisfied: torch in /usr/local/lib/python3.8/dist-packages (1.13.1+cu116)\n","Requirement already satisfied: typing-extensions in /usr/local/lib/python3.8/dist-packages (from torch) (4.4.0)\n","Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n","Requirement already satisfied: torchvision in /usr/local/lib/python3.8/dist-packages (0.14.1+cu116)\n","Requirement already satisfied: numpy in /usr/local/lib/python3.8/dist-packages (from torchvision) (1.21.6)\n","Requirement already satisfied: torch==1.13.1 in /usr/local/lib/python3.8/dist-packages (from torchvision) (1.13.1+cu116)\n","Requirement already satisfied: pillow!=8.3.*,>=5.3.0 in /usr/local/lib/python3.8/dist-packages (from torchvision) (7.1.2)\n","Requirement already satisfied: requests in /usr/local/lib/python3.8/dist-packages (from torchvision) (2.25.1)\n","Requirement already satisfied: typing-extensions in /usr/local/lib/python3.8/dist-packages (from torchvision) (4.4.0)\n","Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.8/dist-packages (from requests->torchvision) (2.10)\n","Requirement already satisfied: chardet<5,>=3.0.2 in /usr/local/lib/python3.8/dist-packages (from requests->torchvision) (4.0.0)\n","Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.8/dist-packages (from requests->torchvision) (1.24.3)\n","Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.8/dist-packages (from requests->torchvision) (2022.12.7)\n"]}],"source":["!pip3 install torch\n","!pip3 install torchvision"]},{"cell_type":"code","source":["!pip install datasets"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"E8UlcHILv_Q3","executionInfo":{"status":"ok","timestamp":1675820967692,"user_tz":-540,"elapsed":8001,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"31d13515-2f49-41fe-a96b-f945d76273eb"},"execution_count":2,"outputs":[{"output_type":"stream","name":"stdout","text":["Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n","Collecting datasets\n"," Downloading datasets-2.9.0-py3-none-any.whl (462 kB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m462.8/462.8 KB\u001b[0m \u001b[31m8.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hCollecting huggingface-hub<1.0.0,>=0.2.0\n"," Downloading huggingface_hub-0.12.0-py3-none-any.whl (190 kB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m190.3/190.3 KB\u001b[0m \u001b[31m22.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hRequirement already satisfied: packaging in /usr/local/lib/python3.8/dist-packages (from datasets) (23.0)\n","Requirement already satisfied: pyarrow>=6.0.0 in /usr/local/lib/python3.8/dist-packages (from datasets) (9.0.0)\n","Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.8/dist-packages (from datasets) (6.0)\n","Collecting responses<0.19\n"," Downloading responses-0.18.0-py3-none-any.whl (38 kB)\n","Requirement already satisfied: dill<0.3.7 in /usr/local/lib/python3.8/dist-packages (from datasets) (0.3.6)\n","Requirement already satisfied: pandas in /usr/local/lib/python3.8/dist-packages (from datasets) (1.3.5)\n","Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.8/dist-packages (from datasets) (1.21.6)\n","Requirement already satisfied: aiohttp in /usr/local/lib/python3.8/dist-packages (from datasets) (3.8.3)\n","Requirement already satisfied: requests>=2.19.0 in /usr/local/lib/python3.8/dist-packages (from datasets) (2.25.1)\n","Collecting multiprocess\n"," Downloading multiprocess-0.70.14-py38-none-any.whl (132 kB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m132.0/132.0 KB\u001b[0m \u001b[31m18.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hCollecting xxhash\n"," Downloading xxhash-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (213 kB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m213.0/213.0 KB\u001b[0m \u001b[31m24.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hRequirement already satisfied: tqdm>=4.62.1 in /usr/local/lib/python3.8/dist-packages (from datasets) (4.64.1)\n","Requirement already satisfied: fsspec[http]>=2021.11.1 in /usr/local/lib/python3.8/dist-packages (from datasets) (2023.1.0)\n","Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (1.3.3)\n","Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (6.0.4)\n","Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (4.0.2)\n","Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (22.2.0)\n","Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (1.8.2)\n","Requirement already satisfied: charset-normalizer<3.0,>=2.0 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (2.1.1)\n","Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (1.3.1)\n","Requirement already satisfied: filelock in /usr/local/lib/python3.8/dist-packages (from huggingface-hub<1.0.0,>=0.2.0->datasets) (3.9.0)\n","Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.8/dist-packages (from huggingface-hub<1.0.0,>=0.2.0->datasets) (4.4.0)\n","Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.8/dist-packages (from requests>=2.19.0->datasets) (2022.12.7)\n","Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.8/dist-packages (from requests>=2.19.0->datasets) (2.10)\n","Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.8/dist-packages (from requests>=2.19.0->datasets) (1.24.3)\n","Requirement already satisfied: chardet<5,>=3.0.2 in /usr/local/lib/python3.8/dist-packages (from requests>=2.19.0->datasets) (4.0.0)\n","Collecting urllib3<1.27,>=1.21.1\n"," Downloading urllib3-1.26.14-py2.py3-none-any.whl (140 kB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m140.6/140.6 KB\u001b[0m \u001b[31m18.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hRequirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.8/dist-packages (from pandas->datasets) (2.8.2)\n","Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.8/dist-packages (from pandas->datasets) (2022.7.1)\n","Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.8/dist-packages (from python-dateutil>=2.7.3->pandas->datasets) (1.15.0)\n","Installing collected packages: xxhash, urllib3, multiprocess, responses, huggingface-hub, datasets\n"," Attempting uninstall: urllib3\n"," Found existing installation: urllib3 1.24.3\n"," Uninstalling urllib3-1.24.3:\n"," Successfully uninstalled urllib3-1.24.3\n","Successfully installed datasets-2.9.0 huggingface-hub-0.12.0 multiprocess-0.70.14 responses-0.18.0 urllib3-1.26.14 xxhash-3.2.0\n"]}]},{"cell_type":"code","source":["from datasets import get_dataset_config_names\n","\n","xtreme_subsets = get_dataset_config_names(\"xtreme\")\n","print(f\"XTREME 서브셋 개수: {len(xtreme_subsets)}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":130,"referenced_widgets":["463f5547f42a407ea77c9da398cd0d70","3e8e0acc912442dcb2c4c9ab990d9408","e24c62ac74114852a4aba3da8279f997","b7ae4618d0dc4d80b4425c3ca2ac59ac","6ec2206460944b53abfa4e3fb6900f68","57deeee9ba6a4b13a5fc7c92b5e2316b","f6d6006d40a849d89e7e118b03661ed1","048a919356ba4c5f9047b7e3e315deb9","e5dd8f341c584512a9bb41fbfffbffc0","1225a3d5d9724ce4988cdedbbd1c37ac","971d5d798c564be7a38b86548aec1f4e","81a0f10dfe0a4c6abfd1c0437a13b1c2","670de4b7e76f408488d5dabc8dcdc64d","82c09669de694a318b21ce5e43530086","f2d860c19e4a4374aed9462457a8a44c","0ca6b4590a7e47c58da0e4570ac503a7","2fe526df2564455f9003114ebc74d911","9384638f81cd4c95a32b75064711fca6","ac3226796b3e4387b2578d1de79f3ce9","7880a8251bbe4524a345dac05300ceed","e8bcf6f9f89f4af3b67046a16dce62fb","0e2d378d62ed423e8d7d03f3d90d72a5","fdf2854735904915b5d9600a2fb43dc7","def20d8846dc4fb289254a64ed3ac05b","b83be59fa2834698bbcbae99d2a77dde","efc301732ca644aa97b437f539289cef","aa5b46580ef541c4a2b0879397cf5468","65fb2f5a632b4970bc8ac087341d4a21","f072833a7bb64cf5a34d08e7e1c18f35","d6c0de66f82348f08b694484812fad12","93cdf06140e84a9392470a75d55e9435","46a99245732946ca8906452625cf4393","f5c26f9c034847d1907ba505b0e1a4b5"]},"id":"RI7VQ3hAvolA","executionInfo":{"status":"ok","timestamp":1675820976873,"user_tz":-540,"elapsed":9184,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"f81e49e9-ca19-4062-ff2f-3cc764de391d"},"execution_count":3,"outputs":[{"output_type":"display_data","data":{"text/plain":["Downloading builder script: 0%| | 0.00/37.5k [00:00, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"463f5547f42a407ea77c9da398cd0d70"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Downloading metadata: 0%| | 0.00/593k [00:00, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"81a0f10dfe0a4c6abfd1c0437a13b1c2"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Downloading readme: 0%| | 0.00/105k [00:00, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"fdf2854735904915b5d9600a2fb43dc7"}},"metadata":{}},{"output_type":"stream","name":"stdout","text":["XTREME 서브셋 개수: 183\n"]}]},{"cell_type":"code","source":["panx_subsets = [s for s in xtreme_subsets if s.startswith(\"PAN\")]\n","panx_subsets[:3]"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"d4AN8nBiwM62","executionInfo":{"status":"ok","timestamp":1675820976874,"user_tz":-540,"elapsed":10,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"951ec0f0-86ca-4477-b619-2238e00050e5"},"execution_count":4,"outputs":[{"output_type":"execute_result","data":{"text/plain":["['PAN-X.af', 'PAN-X.ar', 'PAN-X.bg']"]},"metadata":{},"execution_count":4}]},{"cell_type":"markdown","source":["ISO 639-1 언어 코드로 보이는 두 문자로 된 접미사가 존재 \n"," \n","ex] 독일어(de), 프랑스어(fr), 이탈리아어(it), 영어(en)"],"metadata":{"id":"uagWPzGswb1z"}},{"cell_type":"code","source":["from collections import defaultdict\n","from datasets import DatasetDict\n","\n","from datasets import load_dataset\n","\n","langs = [\"de\", \"fr\", \"it\", \"en\"]\n","# 스위스에서 사용하는 언어로 독일어(62.9%), 프랑스어(22.9%), 이탈리아어(8.4%), 영어(5.9%)\n","fracs = [0.629, 0.229, 0.084, 0.059]\n","\n","# 키가 없는 경우 DatasetDict를 반환\n","panx_ch = defaultdict(DatasetDict)\n","\n","for lang, frac in zip(langs, fracs):\n"," # 다국어 말뭉치를 로드\n"," ds = load_dataset(\"xtreme\", name=f\"PAN-X.{lang}\")\n"," # 각 분할을 언어 비율에 따라 다운 샘플링하고 섞기\n"," # ds는 train, validaton, test 3가지로 나옴 \n"," for split in ds:\n"," # 데이터셋에 의도하지 않은 편향이 들어가지 않도록 shuffle 함수를 사용\n"," # select() 메서드는 fracs 값을 따라 각 말뭉치를 다운샘플링\n"," panx_ch[lang][split] = (ds[split].shuffle(seed=0).select(range(int(frac * ds[split].num_rows)))) \n"," "],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":316,"referenced_widgets":["e734c6943df64bc9b362c9d9e0c502b6","639c4223827245839de246cbfd5ea107","91518d026fd04384846b34a312c29b3a","42ab3545711c441981bdb3fa56c8aaaf","fa2a7322bf9848279f8f1705bc9fbff0","6075a332159e436a9941f389f83faef0","e80b38b953b841089dfdae5c8e32352f","3b3ee66b385e4f35843edae28a14b3cf","d8ff77a6589442a09e8853bacf338586","d3ab122480fe41188319759aa9ae9afb","888b74615f464f918fac670eb9117c33","7067bd8b5bf44733918d96a9756daa16","4b9e7fe66c214dc8a225ddb580e77c8d","625c6ff8f0c94d8bb1a99ce77477d1bc","5756b4565de94768a603d2e5fc2cd012","125faa87950c42b7a105a6be57bf6cd2","a78a576d149546d1b6d0f98bd7673c8d","ff7c565e98da45758bc3d0cdfd0e940c","df5c309de3514f028322a6a526b1a35b","ecfdeacc4c7f40588c32b8a840e724f0","9a05ab36f6df4459a66e2c2bf062f32f","4d783abaa6a249ae90e2fde23897faaf","8db9618fc24444e1b1e0648188494313","3d3b01b3c93346ecba270614969ebf34","8a3884e9458a46a7bfb1e54cc2224152","bd822aed87594262a9d1d89113baabf5","b2959a54524e4e87a47eed3ef072674f","3c3f38763ed649e2bbb6b1e0464f59dd","13b27ca75d9d4f1c9f28b762e6115347","d2b00af01bd64fdf8468f95277232cb8","731076999b3b4bd0a4526cd4b7748c9b","ca3222f811b04024b165de81a833e4b7","808df7c6d141417a94d27969d0cbbfc6","8c0fd6197d7a470c9456de121a762cf0","28218e2374204431baa591bf30140eb2","61d678a0cd664e8f8e69df00ef4adb12","e1645318450e455882ea30d1aa82982f","0f2561e124974abb91fcf5bc4a969dc3","446633c15fc24e088f1bb65d7ae8771c","78ddbd182c8040aaa24992292c86bcbb","54a2baa40416436dbfd7257d46330708","7d65a0f07e9f44cc8e49a6bc2f0fb8bc","b36691f62c074bd98df7fe380538329f","dd86baaef5354a59a2929edf5293af88","528fea30282642ffa2648136daf752ed","71d6869f86474afda3a272dd407c2843","209f02896265411dac377a72f107ce67","ab57845cdfb44c39931248788b0b826e","af3597f6af5740d0b4c02785e59d3df5","e30098bf33d94a549524d3071de5067b","a38a954f35504c8abdd317e9e466876a","64d376b5e87f4433a8d3366b0052b6bb","5bbe1bb7285c4bfc85016baef496fc7b","e54d8cc778924fcb83d33fbb064558fd","aadce0950e0f402a943c5c66e867b54d","17091a06c8e645f3bf44ceb65aa500a7","eac21acf122d47d8b7eeff260f68fd56","6d802037c06e4de0aac6b7a22493afef","eb4324055c984ab8bec9fe61e1ac83c0","fc4b6af334bd4d6295ec029d91c99da8","ec2fc53ba43e4df8b7904f0a63953d59","3238151e0a8a4ec0870c71d944092119","51ddd8341abd4ac2b05c11549627c4b4","b94677eb309245f8b33cc71d3db0a7b6","d219026755154d02be51fabf80eb67bb","68e7340b165a46f9a7ccb1eb0df621ba","455d943989564ef89f404387adda250c","fe8afaa1e6ac43edbbd6cc7a9f0024a3","63e1183ed437449493fe3ef45ebe49bd","f5a8511a631249a1baf14671d91dfd09","ee1ab08c5e204e56a48074c294f9cc9e","754ad93a80754e7ab1709ea54b39e834","dd01f49f5a9741e2bd25fa3ae3d6f396","871e3fe86eb44f418726ce435002cf33","d215f260aa774297bfa27aac1ac4edd9","7b80b785f62849d699ba34c8c85bec5b","e743c66bd43740b68cdc391d16e5b58e","90247571f6a5433491df5e18e65e9679","3e1e59d2553d4cb6a38fab2b518a5fc3","77f6e964c37a4bea8a3f945ddfa13788","22f193b2cf9e49fbac719e85ec70fdba","90b911d48185465297cb680833a35bb2","d097613d715245c59c175813e1a54952","df578f31a9ad409d8e57840b7a73de19","6920ab7ce46f433db0b4e26e2cb4c238","629c3f6dff504deeab8fca554bb983e0","a75c9b9b2f5048d4be418c08f1f5d073","0e7d9985300341fe83674d71f8fa1dc8","2fdca93baefd4245ac3873186d587c6e","2ca4e13c39644af29486cdee448b49c2","f50f525537f4450b829e051d2ec85e4e","08ff1379909e430385a6691951944c77","f51e322dbcf448188e567f90ad23c30d","92da546d72cb4e9aa7e51d7568b3b0d6","a9cfcfd2516d4219bb5e9e96cead0934","f86b4c410ee8489fb7cdf310d846d103","fbc3c56a9d404e85829b50220bc86346","e2aed321379743f4b2b2766f18e5cd5a","100f02d754304132978e6ad7e85e5195","3391d8a5aaaf4e1098cce55341610356","65b01db542b64f52b036a2f19b135541","af4e2454d79e41fa84caded52f520af1","51b84b63831c47b896d3d27e8a27ce99","40b775ea8e0f4c28b36818aac6b0e03a","c7d291d758684e23ab54b56a16b796a6","605253155e8540b68c784014bc2b9cbd","5a110d07464c4d8cb03ac3a9c6583e3e","3861132317df4a3b975df7200d157868","63decd70d69f4d569f1ed374716698b7","24ff79aa2425457695361d2f0914d2e5","46981a07ed6d4e2799ceb643c28b1363","1e32312f238644d492ce20f9e17a8579","bb804f3e872d4945a15cd8411436c24e","5a874aac91974aafa0f971fd02d54384","89ea6514a9d3461aa7cf15397927df57","72f634fad40c44e18f7b6a217efadb9c","91cf4008d9d34abebbd9101af12d2c02","702ec4ca5b4641b99ca81079dc1d2f66","969fdf84f8e54e9bbcf057e339ca2b8f","00ee7fca00d148e28b780c78af929fb4","df565407eb024f88b04d85f593f34ded","ea5e3a222af7442bb5d3785c901418cc","6af251b973ee4852b8163d9488ad9c8b","df7bcb4527be4680930502bf3d887f14","96ce8787ee124601b8aceea2588646bc","7ffd938674e341ec9aeccfa19a0c54ef","d8e03239fb894f00ac44ea56377543db","6c413ef8a0b0457c892b310966d401f3","808a257d8a854dc48cf8b6ae4ceae05d","d40122b7e55240a4bb3b1d2a666663a8","6a4d7901703a4f92b8ee2840ee101a7d","84e5da56a7e44a728dabbc08e0538eff","91bf26ecbf69487ca698874a0fefd0a4","9f03c407dc594ffaac7657b50abae8d0","1d97f55fa8df45f38632c4997c794ca2","b62fc1a54c474e0c8fe57349a618f47c","78bae9a926f94518bcb1aca3ec3be8c9","db9256186b24436b9eaf495cca73b627","d1a62ffa03614022b9297f4781b01ad1","76b1268583064b7a81e2304254a4423b","b9ea0ccab4654c43b1d07f3857c1b357","5e18cbf866d64bf2b4ca1fa3744326bb","df6a4f2066874e68b41d567515f79f30","2e8c2180648c40c588ab3afe5eaabc50","29c92cd07b1842c69840456c878ff9aa","3b46df46cd854b75b4add832fb4a5d5c","e58866173b7d4ab2bc406b1a5c01b74b","4db8a430139c4501bacc5229e1f082b3","b1f1b39884cb4c5db69b19bd0add6a9c","7075e5e4c4df48a38d7e18aa1aed946e","4646986a311a49219b12f64829a1d40f","24962ba13f11459c93924d2be5bbc164","1c1c2a6884404a89804cab03bdc595b4","953c9766a4e04d309135b4e8f3eb6e04","dc9f3eeb357841538c6234a39ff3394c","14124ad253bc4479b665a066e3028563","79454f50b2e8405693c02e4044c9c477","75cb85bbcd4d40f288b20db918f0ae38","b6f0d63680f6452ab6d1c64f4197a685","66f19530c4f2471a94cd83f006783018","49a2728b072848fa97a5c267ede46e2d","cb1384b48fe4408a9fa1f5bc07823876","8486a17af7a84ea98d57fbfb01ef6bb6","eba25eb814764ab59d313c440f3d9195","19f19423672e4a8caa4e6ae065324323","c9a290e3a6cc494595310142f6816c1e","d80e8f64e23143ecb8b73a1f26fa40f7","5169f99419484e96bdd11bf9266dd710","2faa0934682c4340a5235f7fd9730643","07e0ca56e26f42b8a15f32b0dc205aeb","81986143c46e47c5aa865a97b81f36d0","4ab08dc1ba824db4b8c0cc5544e5c7b2","8fb5b6f8a36a4593a21210abcf9a5e73","5717f2f2f78b40bb957c8cb29def22db","a1040ae0475b4f53a5abcca55c414772","5f52a79dca5944c08fb04e9a1b141531","ae117bea6d4847c4aa9cfc9882ac6cc0","54da2f080e53433298f21b223ed31640","4f0ea89ad4de45ccbc7aa5785c86e6f9","65aeaff82abe493c842e740c26731ab7","1b9d54a916e4415b810e420c3e44a663","73f5868d1c7e46e2a4f16025b9e34627","7635559557334366b5150c52865c6fa9","c1f26a9477c54169bb9110d550bfbbf8","c191f19748bb45eebecc3f1063b94b8a","4f15b85b07cd466f9c5d1d2b6f42f4f4","36ffa644509c4e1a9c7234801a00edac"]},"id":"jBuarG-7xE3c","executionInfo":{"status":"ok","timestamp":1675821041700,"user_tz":-540,"elapsed":64831,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"851b37ff-848a-4a21-b8eb-fc118b2858c2"},"execution_count":5,"outputs":[{"output_type":"stream","name":"stdout","text":["Downloading and preparing dataset xtreme/PAN-X.de to /root/.cache/huggingface/datasets/xtreme/PAN-X.de/1.0.0/29f5d57a48779f37ccb75cb8708d1095448aad0713b425bdc1ff9a4a128a56e4...\n"]},{"output_type":"display_data","data":{"text/plain":["Downloading data: 0%| | 0.00/234M [00:00, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"e734c6943df64bc9b362c9d9e0c502b6"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Generating train split: 0%| | 0/20000 [00:00, ? examples/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"7067bd8b5bf44733918d96a9756daa16"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Generating validation split: 0%| | 0/10000 [00:00, ? examples/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"8db9618fc24444e1b1e0648188494313"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Generating test split: 0%| | 0/10000 [00:00, ? examples/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"8c0fd6197d7a470c9456de121a762cf0"}},"metadata":{}},{"output_type":"stream","name":"stdout","text":["Dataset xtreme downloaded and prepared to /root/.cache/huggingface/datasets/xtreme/PAN-X.de/1.0.0/29f5d57a48779f37ccb75cb8708d1095448aad0713b425bdc1ff9a4a128a56e4. Subsequent calls will reuse this data.\n"]},{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/3 [00:00, ?it/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"528fea30282642ffa2648136daf752ed"}},"metadata":{}},{"output_type":"stream","name":"stdout","text":["Downloading and preparing dataset xtreme/PAN-X.fr to /root/.cache/huggingface/datasets/xtreme/PAN-X.fr/1.0.0/29f5d57a48779f37ccb75cb8708d1095448aad0713b425bdc1ff9a4a128a56e4...\n"]},{"output_type":"display_data","data":{"text/plain":["Generating train split: 0%| | 0/20000 [00:00, ? examples/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"17091a06c8e645f3bf44ceb65aa500a7"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Generating validation split: 0%| | 0/10000 [00:00, ? examples/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"455d943989564ef89f404387adda250c"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Generating test split: 0%| | 0/10000 [00:00, ? examples/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"90247571f6a5433491df5e18e65e9679"}},"metadata":{}},{"output_type":"stream","name":"stdout","text":["Dataset xtreme downloaded and prepared to /root/.cache/huggingface/datasets/xtreme/PAN-X.fr/1.0.0/29f5d57a48779f37ccb75cb8708d1095448aad0713b425bdc1ff9a4a128a56e4. Subsequent calls will reuse this data.\n"]},{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/3 [00:00, ?it/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"2fdca93baefd4245ac3873186d587c6e"}},"metadata":{}},{"output_type":"stream","name":"stdout","text":["Downloading and preparing dataset xtreme/PAN-X.it to /root/.cache/huggingface/datasets/xtreme/PAN-X.it/1.0.0/29f5d57a48779f37ccb75cb8708d1095448aad0713b425bdc1ff9a4a128a56e4...\n"]},{"output_type":"display_data","data":{"text/plain":["Generating train split: 0%| | 0/20000 [00:00, ? examples/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"3391d8a5aaaf4e1098cce55341610356"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Generating validation split: 0%| | 0/10000 [00:00, ? examples/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"46981a07ed6d4e2799ceb643c28b1363"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Generating test split: 0%| | 0/10000 [00:00, ? examples/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"ea5e3a222af7442bb5d3785c901418cc"}},"metadata":{}},{"output_type":"stream","name":"stdout","text":["Dataset xtreme downloaded and prepared to /root/.cache/huggingface/datasets/xtreme/PAN-X.it/1.0.0/29f5d57a48779f37ccb75cb8708d1095448aad0713b425bdc1ff9a4a128a56e4. Subsequent calls will reuse this data.\n"]},{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/3 [00:00, ?it/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"91bf26ecbf69487ca698874a0fefd0a4"}},"metadata":{}},{"output_type":"stream","name":"stdout","text":["Downloading and preparing dataset xtreme/PAN-X.en to /root/.cache/huggingface/datasets/xtreme/PAN-X.en/1.0.0/29f5d57a48779f37ccb75cb8708d1095448aad0713b425bdc1ff9a4a128a56e4...\n"]},{"output_type":"display_data","data":{"text/plain":["Generating train split: 0%| | 0/20000 [00:00, ? examples/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"2e8c2180648c40c588ab3afe5eaabc50"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Generating validation split: 0%| | 0/10000 [00:00, ? examples/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"dc9f3eeb357841538c6234a39ff3394c"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Generating test split: 0%| | 0/10000 [00:00, ? examples/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"c9a290e3a6cc494595310142f6816c1e"}},"metadata":{}},{"output_type":"stream","name":"stdout","text":["Dataset xtreme downloaded and prepared to /root/.cache/huggingface/datasets/xtreme/PAN-X.en/1.0.0/29f5d57a48779f37ccb75cb8708d1095448aad0713b425bdc1ff9a4a128a56e4. Subsequent calls will reuse this data.\n"]},{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/3 [00:00, ?it/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"ae117bea6d4847c4aa9cfc9882ac6cc0"}},"metadata":{}}]},{"cell_type":"code","source":["import pandas as pd\n","\n","pd.DataFrame({lang: [panx_ch[lang][\"train\"].num_rows] for lang in langs}, index=[\"Number of training examples\"])"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":81},"id":"rWMqNZ7oza_P","executionInfo":{"status":"ok","timestamp":1675821041701,"user_tz":-540,"elapsed":35,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"affbc911-49b9-43b6-c49a-d9398f050322"},"execution_count":6,"outputs":[{"output_type":"execute_result","data":{"text/plain":[" de fr it en\n","Number of training examples 12580 4580 1680 1180"],"text/html":["\n","
\n","
\n","
\n","\n","
\n"," \n","
\n","
\n","
de
\n","
fr
\n","
it
\n","
en
\n","
\n"," \n"," \n","
\n","
Number of training examples
\n","
12580
\n","
4580
\n","
1680
\n","
1180
\n","
\n"," \n","
\n","
\n"," \n"," \n"," \n","\n"," \n","
\n","
\n"," "]},"metadata":{},"execution_count":6}]},{"cell_type":"code","source":["element = panx_ch[\"de\"][\"train\"][0]\n","for key, value in element.items():\n"," print(f\"{key}: {value}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"aKPfBEQa0QPc","executionInfo":{"status":"ok","timestamp":1675821041701,"user_tz":-540,"elapsed":32,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"735a815d-23bf-410e-90bd-23cd01707dcf"},"execution_count":7,"outputs":[{"output_type":"stream","name":"stdout","text":["tokens: ['2.000', 'Einwohnern', 'an', 'der', 'Danziger', 'Bucht', 'in', 'der', 'polnischen', 'Woiwodschaft', 'Pommern', '.']\n","ner_tags: [0, 0, 0, 0, 5, 6, 0, 0, 5, 5, 6, 0]\n","langs: ['de', 'de', 'de', 'de', 'de', 'de', 'de', 'de', 'de', 'de', 'de', 'de']\n"]}]},{"cell_type":"markdown","source":["ner_tags 열은 각 개체명이 매핑된 클래스 ID에 해당"],"metadata":{"id":"hqdQleVD14e5"}},{"cell_type":"code","source":["for key, value in panx_ch[\"de\"][\"train\"].features.items():\n"," print(f\"{key}: {value}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"hM9FN5Zo19Di","executionInfo":{"status":"ok","timestamp":1675821041701,"user_tz":-540,"elapsed":27,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"b6fc3246-d49c-4660-9e7e-01d17b2ca4f5"},"execution_count":8,"outputs":[{"output_type":"stream","name":"stdout","text":["tokens: Sequence(feature=Value(dtype='string', id=None), length=-1, id=None)\n","ner_tags: Sequence(feature=ClassLabel(names=['O', 'B-PER', 'I-PER', 'B-ORG', 'I-ORG', 'B-LOC', 'I-LOC'], id=None), length=-1, id=None)\n","langs: Sequence(feature=Value(dtype='string', id=None), length=-1, id=None)\n"]}]},{"cell_type":"code","source":["tags = panx_ch[\"de\"][\"train\"].features[\"ner_tags\"].feature\n","print(tags)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"dJekic5A4myS","executionInfo":{"status":"ok","timestamp":1675821041701,"user_tz":-540,"elapsed":25,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"aea7ab1e-6eec-48b3-a022-c34fa1b2c48b"},"execution_count":9,"outputs":[{"output_type":"stream","name":"stdout","text":["ClassLabel(names=['O', 'B-PER', 'I-PER', 'B-ORG', 'I-ORG', 'B-LOC', 'I-LOC'], id=None)\n"]}]},{"cell_type":"markdown","source":["각 태그의 클래스 이름을 담은 새로운 역(ner_tags_str)을 훈련 세트에 추가"],"metadata":{"id":"gBHMZN4SA7Hp"}},{"cell_type":"code","source":["def create_tag_names(batch):\n"," return {\"ner_tags_str\": [tags.int2str(idx) for idx in batch[\"ner_tags\"]]}\n","\n","panx_de = panx_ch[\"de\"].map(create_tag_names)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":113,"referenced_widgets":["211d525aa2814de2b0559e0dba68865f","1486435bca7f495fa811be4138aba46a","32a958e5606945f3804b1a846ae17e9a","01b0dbf5c17a4adb8019f9d012430c92","5bcdcf410d0e418b83d645a0f514e1fd","40371b8e54db4d1ea5c8851b7d353943","9b3a23f11be043f0ad9d9a4ff7876167","0b837815453b420ea0eccfec7293a5f3","e981c54d25834d029685877830f3469d","3d953ad6dff14d268a8537ff39c19bd3","d0ba5d92c8c04a61b6a92e73b81af2b2","a90a1575956d471f8150a7585033ae18","a3729075e35a425b90da9a04ccf385d3","c737f90a71504bdfa60c6b64b767735c","36fe20b170df4c698e4c36346a3f0766","6d67aeddb4674c2195669854c0dc547a","302aa0a2e6d84a07a2d3d1af5894e6be","88c7be98258f4de48094f21a21e21832","42c8625242a244f6b93f54ddbb7f2fe2","46f5749cbb4644bdbd38becc552e3259","0e1811d3227849ddb8f855d7079e675b","cb2f805494394845aff0fb4e567fef50","e09e8e70bbb44f32b63f38f94066b47d","2085200a95a248a79e0ce40d4b96f476","d5d1e64b89a74cc0b4133b7dbf462676","3d04d7c1e2f547a981d78ec01746f7c0","10ed85fdb5614fe9a88e419f158a7f41","a7d15fc1f337473980bb5135ef18cf2b","c6643cdb310c45fd8dcf25afdb9084cc","3d1cd8e019d34762b3dd4062b434649d","d39c7ae79ba84ed0bfe6e6e0a24f21af","0ef37e041b0047f4ad5c5c1aec14cbb4","cdac238f7cf445cc84041d7302624626"]},"id":"gso5en67AD5T","executionInfo":{"status":"ok","timestamp":1675821045732,"user_tz":-540,"elapsed":4054,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"daf58063-f561-4511-cabc-b2b44f99fa26"},"execution_count":10,"outputs":[{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/12580 [00:00, ?ex/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"211d525aa2814de2b0559e0dba68865f"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/6290 [00:00, ?ex/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"a90a1575956d471f8150a7585033ae18"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/6290 [00:00, ?ex/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"e09e8e70bbb44f32b63f38f94066b47d"}},"metadata":{}}]},{"cell_type":"code","source":["de_example = panx_de[\"train\"][0]\n","pd.DataFrame([de_example[\"tokens\"], de_example[\"ner_tags_str\"]], ['Tokens', 'Tags'])"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":112},"id":"O_s4LbJkAX0R","executionInfo":{"status":"ok","timestamp":1675821045732,"user_tz":-540,"elapsed":27,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"9a82f138-8251-4a61-9c6b-53efab33f595"},"execution_count":11,"outputs":[{"output_type":"execute_result","data":{"text/plain":[" 0 1 2 3 4 5 6 7 8 \\\n","Tokens 2.000 Einwohnern an der Danziger Bucht in der polnischen \n","Tags O O O O B-LOC I-LOC O O B-LOC \n","\n"," 9 10 11 \n","Tokens Woiwodschaft Pommern . \n","Tags B-LOC I-LOC O "],"text/html":["\n","
\n","
\n","
\n","\n","
\n"," \n","
\n","
\n","
0
\n","
1
\n","
2
\n","
3
\n","
4
\n","
5
\n","
6
\n","
7
\n","
8
\n","
9
\n","
10
\n","
11
\n","
\n"," \n"," \n","
\n","
Tokens
\n","
2.000
\n","
Einwohnern
\n","
an
\n","
der
\n","
Danziger
\n","
Bucht
\n","
in
\n","
der
\n","
polnischen
\n","
Woiwodschaft
\n","
Pommern
\n","
.
\n","
\n","
\n","
Tags
\n","
O
\n","
O
\n","
O
\n","
O
\n","
B-LOC
\n","
I-LOC
\n","
O
\n","
O
\n","
B-LOC
\n","
B-LOC
\n","
I-LOC
\n","
O
\n","
\n"," \n","
\n","
\n"," \n"," \n"," \n","\n"," \n","
\n","
\n"," "]},"metadata":{},"execution_count":11}]},{"cell_type":"markdown","source":["태그가 불균형하게 부여되지 않았나 확인 위해 각 분할에서 개체명의 빈도를 계산"],"metadata":{"id":"-HWaM8NFBDFR"}},{"cell_type":"code","source":["from collections import Counter\n","\n","split2freqs = defaultdict(Counter)\n","for split, dataset in panx_de.items():\n"," for row in dataset[\"ner_tags_str\"]:\n"," for tag in row:\n"," if tag.startswith(\"B\"):\n"," tag_type = tag.split(\"-\")[1]\n"," split2freqs[split][tag_type] += 1\n","\n","pd.DataFrame.from_dict(split2freqs, orient=\"index\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":143},"id":"CvoJwwJcBHGj","executionInfo":{"status":"ok","timestamp":1675821045733,"user_tz":-540,"elapsed":25,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"296b3b4b-265a-41fb-952c-cc6835025751"},"execution_count":12,"outputs":[{"output_type":"execute_result","data":{"text/plain":[" LOC ORG PER\n","train 6186 5366 5810\n","validation 3172 2683 2893\n","test 3180 2573 3071"],"text/html":["\n","
\n","
\n","
\n","\n","
\n"," \n","
\n","
\n","
LOC
\n","
ORG
\n","
PER
\n","
\n"," \n"," \n","
\n","
train
\n","
6186
\n","
5366
\n","
5810
\n","
\n","
\n","
validation
\n","
3172
\n","
2683
\n","
2893
\n","
\n","
\n","
test
\n","
3180
\n","
2573
\n","
3071
\n","
\n"," \n","
\n","
\n"," \n"," \n"," \n","\n"," \n","
\n","
\n"," "]},"metadata":{},"execution_count":12}]},{"cell_type":"markdown","source":["결과를 보니 균형 있게 부여. \n","
\n","PER, LOC, ORG 빈도 분포가 대체로 각 분할에서 동일. 따라서 검증 세트와 테스트 세트는 NER 태그의 일반화 능력을 평가하는데 적절"],"metadata":{"id":"UGMvN5mAB1lU"}},{"cell_type":"markdown","source":["# 다중 언어 트랜스포머\n","다중 언어 트랜스포머의 훈련 과정과 아키텍처는 단일 언어 트랜스포머와 비슷, 다만 사전 훈련에 사용하는 말뭉치가 여러 언어의 문서로 구성될 뿐\n","
\n","다중 언어 트랜스포머 모델은 일반적으로 3가지 방식으로 평가\n"," \n","## 1. en\n","- 영어 훈련 데이터에서 미세 튜닝한 다음 각 언어의 테스트 세트에서 평가\n","\n","## 2. each\n","- 언어별 성능을 측정하기 위해 단일 언어의 테스트 세트에서 미세 튜닝하고 평가\n","\n","## 3. all\n","- 모든 훈련 데이터에서 미세 튜닝해 각 언어의 테스트 세트에서 평가\n","\n"],"metadata":{"id":"wi71g2zCCX_p"}},{"cell_type":"markdown","source":["# XLM-R 토큰화\n","XLM-R은 WordPiece 토크나이저 대신 100개 언어의 텍스트에서 훈련된 SentencePiece라는 토크나이저를 사용"],"metadata":{"id":"4FANse1eD9u2"}},{"cell_type":"code","source":["!pip install transformers"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"enKCHp9yFGm6","executionInfo":{"status":"ok","timestamp":1675821054744,"user_tz":-540,"elapsed":9035,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"9f9f1135-0bfd-45d1-bc4e-09e39cb2daee"},"execution_count":13,"outputs":[{"output_type":"stream","name":"stdout","text":["Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n","Collecting transformers\n"," Downloading transformers-4.26.0-py3-none-any.whl (6.3 MB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.3/6.3 MB\u001b[0m \u001b[31m49.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hRequirement already satisfied: huggingface-hub<1.0,>=0.11.0 in /usr/local/lib/python3.8/dist-packages (from transformers) (0.12.0)\n","Requirement already satisfied: requests in /usr/local/lib/python3.8/dist-packages (from transformers) (2.25.1)\n","Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.8/dist-packages (from transformers) (2022.6.2)\n","Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.8/dist-packages (from transformers) (23.0)\n","Requirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.8/dist-packages (from transformers) (4.64.1)\n","Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.8/dist-packages (from transformers) (1.21.6)\n","Requirement already satisfied: filelock in /usr/local/lib/python3.8/dist-packages (from transformers) (3.9.0)\n","Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.8/dist-packages (from transformers) (6.0)\n","Collecting tokenizers!=0.11.3,<0.14,>=0.11.1\n"," Downloading tokenizers-0.13.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.6/7.6 MB\u001b[0m \u001b[31m102.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hRequirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.8/dist-packages (from huggingface-hub<1.0,>=0.11.0->transformers) (4.4.0)\n","Requirement already satisfied: chardet<5,>=3.0.2 in /usr/local/lib/python3.8/dist-packages (from requests->transformers) (4.0.0)\n","Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.8/dist-packages (from requests->transformers) (2022.12.7)\n","Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.8/dist-packages (from requests->transformers) (1.26.14)\n","Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.8/dist-packages (from requests->transformers) (2.10)\n","Installing collected packages: tokenizers, transformers\n","Successfully installed tokenizers-0.13.2 transformers-4.26.0\n"]}]},{"cell_type":"code","source":["from transformers import AutoTokenizer\n","\n","bert_model_name = \"bert-base-cased\"\n","xlmr_model_name = \"xlm-roberta-base\"\n","bert_tokenizer = AutoTokenizer.from_pretrained(bert_model_name)\n","xlmr_tokenizer = AutoTokenizer.from_pretrained(xlmr_model_name)"],"metadata":{"id":"5OnUUkFDERfK","executionInfo":{"status":"ok","timestamp":1675821078805,"user_tz":-540,"elapsed":24081,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"colab":{"base_uri":"https://localhost:8080/","height":241,"referenced_widgets":["f1f69f016e5f4d179fc1a3a3639e194f","4f5da1ad913e472c9d77e1cdc4f8e2b6","ebd7b36421f948439548e7903ed81ee6","96f5ba8063074c748b250f3d38de52f2","31ddd298f1894a069583d6d93d2e45eb","2ead4e84970946d9859ce37da2175d3e","acd513b021d24cd4b127755190f90302","016e44c2b25545e693c1a316ad17deaf","4185518d566c42468315e518bf9fcfe7","0ed70f7d08fa49819bb9c60eafaec297","0644205b912848a7a7f77830b7258223","94f51cdae0494f0dbcf0b341047c90dc","efa3383f5b524d56ae509f4d8e278d22","fb036d925be044438f01290f948f8e02","8365cc260cba472d85e6a02ded253ca1","0e2d034462e94a178aa4cfa54343bc69","8c91896dddd142b1996ab976b14cc1c7","d582d329ca4449349a6e08e11ac7d25c","c71c37c8c3f443f88c38d94ba7a597c7","00e0165acad84074a1b02f60b8993d8c","345a8b6eefe348de982f2fe100e4b94c","57553ee721924d69b2846ab8a05e4305","4604e0047d924a839e969b1f219a8d5e","c24a2e3f6fa842b6ac52996933480550","5ee0e7b975c74d4cbdc765e7d82e2ef0","de8687af54af49b99a3f05ec8654c83d","89139f8f31c846c48a3d0b329b881bde","33cd59f8716d4f7ea40821c7774a38fa","2e793a8f212a427186a427b54c00fe33","6a6f5218d1c54be7a30777ceb4fd6b00","85f8bbb7d8b24b5a95c7fb674d6cb43a","60207316f72e435f9266225c5f6fbc19","ff8103828112408cbf16c5c6d13b2a33","f753628d026a471a8b6f7987011dfe91","670b05b90bdf4587beb6a9e1b3f998e8","8b91d4f194844d68bd81acd3438b7ba2","07e98f59b8fb4ffe9c21f62f2e1b3ae5","6ccf052943204fb7be8c2a2987237148","d94df671dfa14c02bac4f12819c0748e","d9978751d44d486b8d99c812088d29ce","c9dfffd412d045a283e46566158deee7","69e2116a570c4b61b55b7dd7ff0545e7","b991d0341ba748a5a86e36682c350a10","098f8beefedf487e8e620a33e5b4873d","5bfc16d5cd14405d969e20261f913e40","2ddc82fde5284c5fa22e80a1ded0c4de","0090c677db7045df9b5ce4935468b238","9f9f9d032e9c468990f61a9769620a6d","332ea6b461d744bdaf2edbf3048d80ea","fdcfc65469e04a4baef6def0234b3884","021e8ac000564e9692aa09f083f36704","dab4bb5c9bd44bff9e91421be0977990","6d7f64577b9c48a8848a84dfded91fe4","9d602ef4136d43f0a5b6beee8555a3bb","bc060a9491da4500b6279c7e4f8880e3","80d6515bf0e145c189303a631f4ea08f","801affdca836427988a60f8d21deda58","f83ba0cbd9cc4a1588c7e76b43f068c0","e1b3263abf434c8d94b02b0be45f9434","d97430ac276e4589b503b90886cb8a00","df18f7c7b94a40ae828ea9eac0a60b34","925a4454e6e449218c42585198563cbf","55df9e5858dd4284b40482ebfa346142","e90cebb0049341fdb70f11727cbf5e79","1d630e8957ad45728b9a539d32692cc1","f4ca2927907243ffa08b2baa44941069","d1fd8e9e28984643b4f55abd35f77840","123eb17fe6c243688872a572c2cc88ec","8cac781872fb407facc613e411f8d0c4","fc3d29bb3e2d42a696a2b51aa9e19459","784055e398204ce8a9029852e73ef5bd","bab93cded8a045f299b7374306048456","914f3a746bd547f9a951132454e7818a","c8d7f27575f1400a932be83e3b2c2e07","e4b4b462d7af44efa4be4c8e1259da99","a4017fc65bb64bb391f7f90fcad7629c","686bc45dd1384f158656a37caa5e4563"]},"outputId":"c51b37aa-7370-4d7b-a9c0-e093e4b9c23b"},"execution_count":14,"outputs":[{"output_type":"display_data","data":{"text/plain":["Downloading (…)okenizer_config.json: 0%| | 0.00/29.0 [00:00, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"f1f69f016e5f4d179fc1a3a3639e194f"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Downloading (…)lve/main/config.json: 0%| | 0.00/570 [00:00, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"94f51cdae0494f0dbcf0b341047c90dc"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Downloading (…)solve/main/vocab.txt: 0%| | 0.00/213k [00:00, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"4604e0047d924a839e969b1f219a8d5e"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Downloading (…)/main/tokenizer.json: 0%| | 0.00/436k [00:00, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"f753628d026a471a8b6f7987011dfe91"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Downloading (…)lve/main/config.json: 0%| | 0.00/615 [00:00, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"5bfc16d5cd14405d969e20261f913e40"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Downloading (…)tencepiece.bpe.model: 0%| | 0.00/5.07M [00:00, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"80d6515bf0e145c189303a631f4ea08f"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["Downloading (…)/main/tokenizer.json: 0%| | 0.00/9.10M [00:00, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"d1fd8e9e28984643b4f55abd35f77840"}},"metadata":{}}]},{"cell_type":"code","source":["text = \"Jack Sparrow loves Net York!\"\n","bert_tokens = bert_tokenizer(text).tokens()\n","xlmr_tokens = xlmr_tokenizer(text).tokens()\n","\n"],"metadata":{"id":"Gk6iyuHAFRKJ","executionInfo":{"status":"ok","timestamp":1675821078806,"user_tz":-540,"elapsed":26,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"execution_count":15,"outputs":[]},{"cell_type":"code","source":["print(bert_tokens)\n","print(xlmr_tokens)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"bvhlVtwQFzrS","executionInfo":{"status":"ok","timestamp":1675821078806,"user_tz":-540,"elapsed":25,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"fa795f05-3048-43f9-8317-789e57e22abf"},"execution_count":16,"outputs":[{"output_type":"stream","name":"stdout","text":["['[CLS]', 'Jack', 'Spa', '##rrow', 'loves', 'Net', 'York', '!', '[SEP]']\n","['', '▁Jack', '▁Spar', 'row', '▁love', 's', '▁Net', '▁York', '!', '']\n"]}]},{"cell_type":"markdown","source":["## 토큰화 파이프라인\n","토큰화를 다룰 때 문자열을 모델에 주입할 정수로 변환하는 연산으로만 여겼지만 이는 전적으로 옳은 것은 아님. 실제 처리 파이프 라인은 아래와 같이 4 단계로 구성됨\n","\n","1. 정규화\n","2. 사전 토큰화\n","3. 토크나이저 모델\n","4. 사후처리\n","\n","1. 정규화\n","- 원시 문자열을 깨끗하게 만들기 위해 적용하는 일련의 연산, 대게 이런 연산에는 공백과 악센트가 붙는 문자를 제거하는 작업 등이 포함\n","- 유니코드 정규화(https://unicode.org/reports/tr15/)는 많은 토크나이저에서 적용하는 또 다른 일반적 정규화 연산\n","\n","2. 사전 토큰화(pretokenization)\n","- 텍스트를 더 작은 객체로 분할하며 훈련 마지막에 생성되는 토큰의 상한선을 제공\n","- 사전 토큰화가 텍스트를 단어로 분할하고 최종 토큰은 이 단어의 일부가 된다 생각하면 됨\n","- 영어, 독어 등 많은 유럽어족의 언어에서 문자열이 일반적으로 공백과 구두점을 기준 삼아 단어로 분할\n"," - 이런 단어는 파이프라인의 다음 단계에서 BPE, 유니그램 알고리즘을 사용해 부분단어(subword)로 분할하기 더 쉬움\n","\n","3. 토크나이저 모델\n","- 부분단어 분할 모델을 단어에 적용, 이 모델은 단어를 부분단어로 나눠 어휘사전의 크기와 OOV 토큰의 개수를 줄이는 역할을 함\n","- 부분단어 알고리즘\n"," - BPE,\n"," - 유니그램\n"," - WordPiece\n","\n","4. 사후처리\n","- 토큰 리스트에 부가적인 변환을 적용\n"," - Ex] 입력 토큰 인덱스의 시퀀스 처음과 끝에 특수 토큰을 추가하는 경우 등"],"metadata":{"id":"JIsrxh8oF-Q7"}},{"cell_type":"markdown","source":["# SentencePiece 토크나이저\n","유니그램이라는 부분단어 분할 방식을 기반으로 각 입력 텍스트를 유니코드 문자 시퀀스로 인코딩\n","- 일본어 등의 많은 언어에 공백문자가 있지 않는데 SentencePiece의 또 다른 고유한 특징은 공백문자가 유니코드 기호 U+2581 또는 '_' 문자에 할당 되므로 언어별 사전 토크나이저에 의존하지 않고 정확하게 시퀀스 복원이 가능 "],"metadata":{"id":"kFQNqaQgJLdW"}},{"cell_type":"markdown","source":["# 개체명 인식을 위한 트랜스포머\n","\n","\n"],"metadata":{"id":"tfce7a6ELLGY"}},{"cell_type":"markdown","source":["토큰 분류 작업에서 부분단어 처리 방법\n"," \n","예를 들어 이름 Christa는 Chr와 #ista로 토큰화 됨 이중 어느 단어에 (아니면 두 단어 모두에) B-PER 레이블을 할당해야 할까요?\n"," \n","BERT 논문에서 저자들은 첫번째 부분단어('Chr')에 할당하고 이어지는 부분단어는 무시, 무시한 부분단어를 IGN으로 표시. 나중에 후처리 단계에서 첫 번째 부분단어의 예측 레이블을 후속 부분단어로 쉽게 전파 가능"],"metadata":{"id":"rYnY6i3ANrS2"}},{"cell_type":"markdown","source":["# 트랜스포머 모델 클래스\n","트랜스포머스는 아키텍처와 작업마다 전용 클래스를 제공\n"," \n","작업에 연관된 모델 클래스 이름은 For 형식을 따름. AutoModel 클래스를 사용하는 경우 AutoModelFor\n","
\n","트랜스포머스는 기존 모델을 특정 작업에 맞춰 쉽게 확장 가능하도록 설계됨. 사전 훈련된 모델에서 가중치를 로드하고 작업에 특화된 헬퍼 함수를 사용. 특정 용도의 사용자 정의 모델을 만들 수 있음"],"metadata":{"id":"SNgK8H2mQFzH"}},{"cell_type":"markdown","source":["## 바디와 헤드\n","트랜스포머스의 모델들은 바디(body)와 헤드(head)로 나뉜 모델 구조를 가짐\n"," \n","모델의 마지막 층이 후속 작업에 맞는 층으로 변환. 이 마지막 층이 모델의 **헤드** 이며 작업에 특화\n"," \n","헤드를 제외한 모델의 나머지 부분을 **바디**라 함. 작업에 특화되지 않은 토큰 임베딩과 트랜스포머 층이 포함. 모델의 바디는 BertModel 또는 GPT2Model 같은 클래스로 구현되며 마지막 바디의 마지막 층의 은닉 상태를 반환\n",""],"metadata":{"id":"ZLy-BBzWQeEg"}},{"cell_type":"markdown","source":["## 토큰 분류를 위한 사용자 정의 모델 만들기"],"metadata":{"id":"2cSDj1_vTZMP"}},{"cell_type":"code","source":["import torch.nn as nn\n","from transformers import XLMRobertaConfig\n","from transformers.modeling_outputs import TokenClassifierOutput\n","from transformers.models.roberta.modeling_roberta import RobertaModel\n","from transformers.models.roberta.modeling_roberta import RobertaPreTrainedModel\n","\n","class XLMRobertaForTokenClassification(RobertaPreTrainedModel):\n"," config_class = XLMRobertaConfig\n","\n"," def __init__(self, config):\n"," super().__init__(config)\n"," self.num_labels = config.num_labels\n"," # 모델 바디를 로드\n"," self.roberta = RobertaModel(config, add_pooling_layer=False)\n"," # 토큰 분류 헤드를 준비\n"," self.dropout = nn.Dropout(config.hidden_dropout_prob)\n"," self.classifier = nn.Linear(config.hidden_size, config.num_labels)\n"," # 가중치를 로드하고 초기화\n"," self.init_weights()\n","\n"," def forward(self, input_ids=None, attention_mask=None, token_type_ids=None, labels=None, **kwargs):\n"," # 모델 바디를 사용해 인코더 표현을 얻음\n"," outputs = self.roberta(input_ids, attention_mask=attention_mask, token_type_ids=token_type_ids, **kwargs)\n"," # 인코더 표현을 헤드에 통과\n"," sequence_output = self.dropout(outputs[0])\n"," logits = self.classifier(sequence_output)\n"," # 손실을 계산\n"," loss = None\n"," if labels is not None:\n"," loss_fct = nn.CrossEntropyLoss()\n"," loss = loss_fct(logits.view(-1, self.num_labels), labels.view(-1))\n"," # 모델 출력 객체를 반환\n"," return TokenClassifierOutput(loss=loss, logits=logits, hidden_states=outputs.hidden_states, attentions=outputs.attentions)"],"metadata":{"id":"dUoKNNdjTWk3","executionInfo":{"status":"ok","timestamp":1675821080583,"user_tz":-540,"elapsed":1798,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"execution_count":17,"outputs":[]},{"cell_type":"markdown","source":["- config 클래스는 새로운 모델을 초기화할 때 표준 XLM-R 설정을 사용하도록 도와줌\n","- super() 메서드로 RobertaPreTrainedModel 클래스의 초기화 함수를 호출\n"," - 사전 훈련된 가중치의 초기화나 로딩을 처리\n","- add_pooling_layer=False로 지정하여 [CLS] 토큰에 해당하는 은닉 상태 외에 모든 은닉 상태가 반환되도록 함\n"," - add_pooling_layer의 기본값은 True로 첫 번째 토큰의 은닉 상태만 밀집 층과 활성화 함수에 통과시켜 출력\n","- RobertaPreTrainedModel 클래스에서 상속된 init_weights() 메서드를 호출해 가중치를 초기화\n"," - 모델 바디에 사전훈련된 가중치가 로드되고 토큰 분류 헤드의 가중치가 랜덤하게 초기화 될 것"],"metadata":{"id":"9CHPVLJsjJp6"}},{"cell_type":"code","source":["# [tags를 정의했던 위 코드]\n","# tags = panx_ch[\"de\"][\"train\"].features[\"ner_tags\"].feature\n","# ClassLabel(names=['O', 'B-PER', 'I-PER', 'B-ORG', 'I-ORG', 'B-LOC', 'I-LOC'], id=None)\n","\n","index2tag = {idx: tag for idx, tag in enumerate(tags.names)}\n","tag2index = {tag: idx for idx, tag in enumerate(tags.names)}"],"metadata":{"id":"Bic1OxxBkJGU","executionInfo":{"status":"ok","timestamp":1675821080583,"user_tz":-540,"elapsed":5,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"execution_count":18,"outputs":[]},{"cell_type":"code","source":["from transformers import AutoConfig\n","\n","xlmr_config = AutoConfig.from_pretrained(xlmr_model_name, num_labels=tags.num_classes, id2label=index2tag, label2id=tag2index)"],"metadata":{"id":"kU7yY0YGkWAX","executionInfo":{"status":"ok","timestamp":1675821081789,"user_tz":-540,"elapsed":1210,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"execution_count":19,"outputs":[]},{"cell_type":"markdown","source":["AutoConfig 클래스는 모델 구조의 청사진을 가짐. AutoModel.from_pretrained(model_ckpt)로 모델을 로드할 때 모델에 연관된 설정 파일이 자동으로 다운로드 됨. but, 클래스 개수나 레이블 이름 등을 수정하고자 한다면 커스터마이징 하려는 매개변수로 이 설정 파일을 먼저 로드해야 함"],"metadata":{"id":"oH2i5fvHleg-"}},{"cell_type":"code","source":["# from_pretrained() 함수를 사용해 모델 가중치를 로드\n","import torch\n","\n","device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n","xlmr_model = (XLMRobertaForTokenClassification.from_pretrained(xlmr_model_name, config=xlmr_config).to(device))"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":156,"referenced_widgets":["ee35beb51277432a80c6c507ea941e81","9977e174493d4522b4ad8643c0a7b534","1ba89974c87e4c6a818f6a85c03b55c8","96861e3ec0124949a8dfbbd9a3f8ae4d","52f2ce5e3e4246b8a503b21ad531e9ed","5d26e3b64c4444f3a772c33f95906e7e","42c224b56c9c4b548abd21c97122ad41","e8c85c704de8418eb3363b8ad9a6146c","e8eb5682d2334e1d8833a209f2dbd826","464ca3b6b1694d93becbabba2bc5f2e6","11c5f0454f774718a6d4efb4ba63cae7"]},"id":"g5F0vtmhl9hX","executionInfo":{"status":"ok","timestamp":1675821105942,"user_tz":-540,"elapsed":23379,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"cb75f3fd-ab52-4ab9-b170-291b0cfe1aa3"},"execution_count":20,"outputs":[{"output_type":"display_data","data":{"text/plain":["Downloading (…)\"pytorch_model.bin\";: 0%| | 0.00/1.12G [00:00, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"ee35beb51277432a80c6c507ea941e81"}},"metadata":{}},{"output_type":"stream","name":"stderr","text":["Some weights of the model checkpoint at xlm-roberta-base were not used when initializing XLMRobertaForTokenClassification: ['lm_head.layer_norm.weight', 'roberta.pooler.dense.bias', 'lm_head.layer_norm.bias', 'roberta.pooler.dense.weight', 'lm_head.bias', 'lm_head.dense.weight', 'lm_head.dense.bias', 'lm_head.decoder.weight']\n","- This IS expected if you are initializing XLMRobertaForTokenClassification from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n","- This IS NOT expected if you are initializing XLMRobertaForTokenClassification from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n","Some weights of XLMRobertaForTokenClassification were not initialized from the model checkpoint at xlm-roberta-base and are newly initialized: ['classifier.weight', 'roberta.embeddings.position_ids', 'classifier.bias']\n","You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n"]}]},{"cell_type":"markdown","source":["from_pretrained() 함수를 사용해 모델 가중치를 로드. 모델 클래스에 사전 훈련된 가중치를 로드하는 코드는 없지만 RobertaPreTrainedModel을 사용했으니 로드 가능"],"metadata":{"id":"EqiB00h8m8pK"}},{"cell_type":"code","source":["# 토크나이저와 모델을 바르게 초기화했는지 확인\n","input_ids = xlmr_tokenizer.encode(text, return_tensors=\"pt\")\n","print(input_ids)\n","pd.DataFrame([xlmr_tokens, input_ids[0].numpy()], index=[\"Tokens\", \"Input IDs\"])"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":129},"id":"ywUyGhtVnfNX","executionInfo":{"status":"ok","timestamp":1675821105943,"user_tz":-540,"elapsed":27,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"a3238c2f-a11a-4307-deab-4205a539a027"},"execution_count":21,"outputs":[{"output_type":"stream","name":"stdout","text":["tensor([[ 0, 21763, 37456, 15555, 5161, 7, 10086, 5753, 38, 2]])\n"]},{"output_type":"execute_result","data":{"text/plain":[" 0 1 2 3 4 5 6 7 8 9\n","Tokens ▁Jack ▁Spar row ▁love s ▁Net ▁York ! \n","Input IDs 0 21763 37456 15555 5161 7 10086 5753 38 2"],"text/html":["\n","
\n","
\n","
\n","\n","
\n"," \n","
\n","
\n","
0
\n","
1
\n","
2
\n","
3
\n","
4
\n","
5
\n","
6
\n","
7
\n","
8
\n","
9
\n","
\n"," \n"," \n","
\n","
Tokens
\n","
<s>
\n","
▁Jack
\n","
▁Spar
\n","
row
\n","
▁love
\n","
s
\n","
▁Net
\n","
▁York
\n","
!
\n","
</s>
\n","
\n","
\n","
Input IDs
\n","
0
\n","
21763
\n","
37456
\n","
15555
\n","
5161
\n","
7
\n","
10086
\n","
5753
\n","
38
\n","
2
\n","
\n"," \n","
\n","
\n"," \n"," \n"," \n","\n"," \n","
\n","
\n"," "]},"metadata":{},"execution_count":21}]},{"cell_type":"code","source":["# 모델에 입력 ID를 전달하고 argmax 함수로 토큰마다 확률이 가장 높은 클래스를 선택해 예측\n","outputs = xlmr_model(input_ids.to(device)).logits\n","predictions = torch.argmax(outputs, dim=-1)\n","print(f\"시퀀스에 있는 토큰 개수: {len(xlmr_tokens)}\")\n","print(f\"출력 크기: {outputs.shape}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"vlbSyjXyoJTG","executionInfo":{"status":"ok","timestamp":1675821109156,"user_tz":-540,"elapsed":3235,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"df541869-115e-4290-ee75-45c55501a5d8"},"execution_count":22,"outputs":[{"output_type":"stream","name":"stdout","text":["시퀀스에 있는 토큰 개수: 10\n","출력 크기: torch.Size([1, 10, 7])\n"]}]},{"cell_type":"markdown","source":["로짓의 크기는 [batch_size, num_tokens, num_tags] 이고 이는 각 토큰에는 일곱 개의 NER 태그와 로짓이 주어졌다는 의미."],"metadata":{"id":"_PU1GEl7ncS2"}},{"cell_type":"code","source":["print(predictions[0])\n","preds = [tags.names[p] for p in predictions[0].cpu().numpy()]\n","pd.DataFrame([xlmr_tokens, preds], index=[\"Tokens\", \"Tags\"])"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":129},"id":"5ZgZTLSOoxQ3","executionInfo":{"status":"ok","timestamp":1675821109156,"user_tz":-540,"elapsed":36,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"d7891b06-b22f-4248-9c7a-406ecfa12a69"},"execution_count":23,"outputs":[{"output_type":"stream","name":"stdout","text":["tensor([5, 1, 1, 1, 5, 1, 3, 3, 1, 5], device='cuda:0')\n"]},{"output_type":"execute_result","data":{"text/plain":[" 0 1 2 3 4 5 6 7 8 9\n","Tokens ▁Jack ▁Spar row ▁love s ▁Net ▁York ! \n","Tags B-LOC B-PER B-PER B-PER B-LOC B-PER B-ORG B-ORG B-PER B-LOC"],"text/html":["\n","
\n","
\n","
\n","\n","
\n"," \n","
\n","
\n","
0
\n","
1
\n","
2
\n","
3
\n","
4
\n","
5
\n","
6
\n","
7
\n","
8
\n","
9
\n","
\n"," \n"," \n","
\n","
Tokens
\n","
<s>
\n","
▁Jack
\n","
▁Spar
\n","
row
\n","
▁love
\n","
s
\n","
▁Net
\n","
▁York
\n","
!
\n","
</s>
\n","
\n","
\n","
Tags
\n","
B-LOC
\n","
B-PER
\n","
B-PER
\n","
B-PER
\n","
B-LOC
\n","
B-PER
\n","
B-ORG
\n","
B-ORG
\n","
B-PER
\n","
B-LOC
\n","
\n"," \n","
\n","
\n"," \n"," \n"," \n","\n"," \n","
\n","
\n"," "]},"metadata":{},"execution_count":23}]},{"cell_type":"markdown","source":["랜덤한 가중치를 가진 토큰 분류 층은 역시나 개선할 여지가 많음. 레이블링된 데이터로 미세 튜닝하여 결과를 더 좋게 만들어야 할걸로 보임"],"metadata":{"id":"oj3AK1bdpzRi"}},{"cell_type":"code","source":["def tag_text(text, tags, model, tokenizer):\n"," # 토큰을 준비\n"," tokens = tokenizer(text).tokens()\n"," # 시퀀스를 입력 ID로 인코딩\n"," input_ids = xlmr_tokenizer(text, return_tensors=\"pt\").input_ids.to(device)\n"," # 가능한 일곱 개의 클래스에 대한 로짓을 출력\n"," outputs = model(input_ids)[0]\n"," # argmax 함수로 토큰마다 가장 가능성이 높은 클래스를 선택\n"," predictions = torch.argmax(outputs, dim=2)\n"," # 데이터프레임으로 변환\n"," preds = [tags.names[p] for p in predictions[0].cpu().numpy()]\n"," return pd.DataFrame([tokens, preds], index=[\"Tokens\", \"Tags\"])"],"metadata":{"id":"RVr30Mhop-PV","executionInfo":{"status":"ok","timestamp":1675821109157,"user_tz":-540,"elapsed":31,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"execution_count":24,"outputs":[]},{"cell_type":"markdown","source":["# NER 작업을 위해 텍스트 토큰화\n","샘플을 인코딩하고 처리하는 토크나이저와 모델을 준비했으므로 다음 단계로 미세 튜닝을 위해 XLM-R 모델에 전달할 전체 데이터셋을 토큰화. 데이터셋은 map() 연산으로 Dataset 객체를 빠르게 토큰화"],"metadata":{"id":"4OcVZdPvp6Zv"}},{"cell_type":"code","source":["# [de_example 정의했던 코드]\n","# de_example = panx_de[\"train\"][0]\n","# pd.DataFrame([de_example[\"tokens\"], de_example[\"ner_tags_str\"]], ['Tokens', 'Tags'])\n","\n","words, labels = de_example[\"tokens\"], de_example[\"ner_tags\"]"],"metadata":{"id":"BauOi1Cvsk6n","executionInfo":{"status":"ok","timestamp":1675821109157,"user_tz":-540,"elapsed":30,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"execution_count":25,"outputs":[]},{"cell_type":"code","source":["# 각 단어를 토큰화, 토크나이저에 is_split_into_words 매개변수를 사용해 입력 문장이 이미 단어로 나눠졌다는 사실을 전달\n","\n","tokenized_input = xlmr_tokenizer(de_example[\"tokens\"], is_split_into_words=True)\n","print(tokenized_input)\n","tokens = xlmr_tokenizer.convert_ids_to_tokens(tokenized_input[\"input_ids\"])\n","pd.DataFrame([tokens], index=[\"Tokens\"])"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":147},"id":"rYXQzYcqtBGA","executionInfo":{"status":"ok","timestamp":1675821109157,"user_tz":-540,"elapsed":30,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"9efee2f0-01ab-4924-9b3a-2a718a581cb6"},"execution_count":26,"outputs":[{"output_type":"stream","name":"stdout","text":["{'input_ids': [0, 70101, 176581, 19, 142, 122, 2290, 708, 1505, 18363, 18, 23, 122, 127474, 15439, 13787, 14, 15263, 18917, 663, 6947, 19, 6, 5, 2], 'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}\n"]},{"output_type":"execute_result","data":{"text/plain":[" 0 1 2 3 4 5 6 7 8 9 ... 15 \\\n","Tokens ▁2.000 ▁Einwohner n ▁an ▁der ▁Dan zi ger ▁Buch ... ▁Wo \n","\n"," 16 17 18 19 20 21 22 23 24 \n","Tokens i wod schaft ▁Po mmer n ▁ . \n","\n","[1 rows x 25 columns]"],"text/html":["\n","
\n","
\n","
\n","\n","
\n"," \n","
\n","
\n","
0
\n","
1
\n","
2
\n","
3
\n","
4
\n","
5
\n","
6
\n","
7
\n","
8
\n","
9
\n","
...
\n","
15
\n","
16
\n","
17
\n","
18
\n","
19
\n","
20
\n","
21
\n","
22
\n","
23
\n","
24
\n","
\n"," \n"," \n","
\n","
Tokens
\n","
<s>
\n","
▁2.000
\n","
▁Einwohner
\n","
n
\n","
▁an
\n","
▁der
\n","
▁Dan
\n","
zi
\n","
ger
\n","
▁Buch
\n","
...
\n","
▁Wo
\n","
i
\n","
wod
\n","
schaft
\n","
▁Po
\n","
mmer
\n","
n
\n","
▁
\n","
.
\n","
</s>
\n","
\n"," \n","
\n","
1 rows × 25 columns
\n","
\n"," \n"," \n"," \n","\n"," \n","
\n","
\n"," "]},"metadata":{},"execution_count":26}]},{"cell_type":"markdown","source":["'Einwohnern'을 두 개의 부분 단어 '_Einwohner'와 'n'으로 나눔. '_Einwohner'만 B-LOC 레이블에 연결해야한다는 규칙을 따라야 하므로 첫 번째 부분단어 이후의 부분단어는 마스킹 \n","이 작업에 도움이되는 **word_idx()** 함수가 존재"],"metadata":{"id":"tlkzUfpsuhnQ"}},{"cell_type":"code","source":["word_ids = tokenized_input.word_ids()\n","pd.DataFrame([tokens, word_ids], index=[\"Tokens\", \"Word IDs\"])"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":141},"id":"qRM2SXAAu8L-","executionInfo":{"status":"ok","timestamp":1675821109157,"user_tz":-540,"elapsed":27,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"fa1f0f28-c7dc-4ed9-bbbb-53a9ac316bae"},"execution_count":27,"outputs":[{"output_type":"execute_result","data":{"text/plain":[" 0 1 2 3 4 5 6 7 8 9 ... \\\n","Tokens ▁2.000 ▁Einwohner n ▁an ▁der ▁Dan zi ger ▁Buch ... \n","Word IDs None 0 1 1 2 3 4 4 4 5 ... \n","\n"," 15 16 17 18 19 20 21 22 23 24 \n","Tokens ▁Wo i wod schaft ▁Po mmer n ▁ . \n","Word IDs 9 9 9 9 10 10 10 11 11 None \n","\n","[2 rows x 25 columns]"],"text/html":["\n","
\n","
\n","
\n","\n","
\n"," \n","
\n","
\n","
0
\n","
1
\n","
2
\n","
3
\n","
4
\n","
5
\n","
6
\n","
7
\n","
8
\n","
9
\n","
...
\n","
15
\n","
16
\n","
17
\n","
18
\n","
19
\n","
20
\n","
21
\n","
22
\n","
23
\n","
24
\n","
\n"," \n"," \n","
\n","
Tokens
\n","
<s>
\n","
▁2.000
\n","
▁Einwohner
\n","
n
\n","
▁an
\n","
▁der
\n","
▁Dan
\n","
zi
\n","
ger
\n","
▁Buch
\n","
...
\n","
▁Wo
\n","
i
\n","
wod
\n","
schaft
\n","
▁Po
\n","
mmer
\n","
n
\n","
▁
\n","
.
\n","
</s>
\n","
\n","
\n","
Word IDs
\n","
None
\n","
0
\n","
1
\n","
1
\n","
2
\n","
3
\n","
4
\n","
4
\n","
4
\n","
5
\n","
...
\n","
9
\n","
9
\n","
9
\n","
9
\n","
10
\n","
10
\n","
10
\n","
11
\n","
11
\n","
None
\n","
\n"," \n","
\n","
2 rows × 25 columns
\n","
\n"," \n"," \n"," \n","\n"," \n","
\n","
\n"," "]},"metadata":{},"execution_count":27}]},{"cell_type":"markdown","source":["word_ids는 각 부분단어를 words 리스트에 있는 해당 단어의 인덱스에 매핑. 와 같은 특수 토큰과 부분단어의 레이블을 -100으로 설정해 훈련하는 동안 마스킹 처리"],"metadata":{"id":"PJLzO46q1xyj"}},{"cell_type":"code","source":["previous_word_idx = None\n","label_ids = []\n","\n","for word_idx in word_ids:\n"," if word_idx is None or word_idx == previous_word_idx:\n"," label_ids.append(-100)\n"," elif word_idx != previous_word_idx:\n"," label_ids.append(labels[word_idx])\n"," previous_word_idx = word_idx\n","\n","labels = [index2tag[l] if l != -100 else \"IGN\" for l in label_ids]\n","index = [\"Tokens\", \"Word IDs\", \"Label IDs\", \"Labels\"]\n","\n","pd.DataFrame([tokens, word_ids, label_ids, labels], index=index)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":204},"id":"7-zfZERZ1wV3","executionInfo":{"status":"ok","timestamp":1675821109157,"user_tz":-540,"elapsed":26,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"1eddd254-07af-4424-ff1c-1d5a19654005"},"execution_count":28,"outputs":[{"output_type":"execute_result","data":{"text/plain":[" 0 1 2 3 4 5 6 7 8 \\\n","Tokens ▁2.000 ▁Einwohner n ▁an ▁der ▁Dan zi ger \n","Word IDs None 0 1 1 2 3 4 4 4 \n","Label IDs -100 0 0 -100 0 0 5 -100 -100 \n","Labels IGN O O IGN O O B-LOC IGN IGN \n","\n"," 9 ... 15 16 17 18 19 20 21 22 23 \\\n","Tokens ▁Buch ... ▁Wo i wod schaft ▁Po mmer n ▁ . \n","Word IDs 5 ... 9 9 9 9 10 10 10 11 11 \n","Label IDs 6 ... 5 -100 -100 -100 6 -100 -100 0 -100 \n","Labels I-LOC ... B-LOC IGN IGN IGN I-LOC IGN IGN O IGN \n","\n"," 24 \n","Tokens \n","Word IDs None \n","Label IDs -100 \n","Labels IGN \n","\n","[4 rows x 25 columns]"],"text/html":["\n","
\n","
\n","
\n","\n","
\n"," \n","
\n","
\n","
0
\n","
1
\n","
2
\n","
3
\n","
4
\n","
5
\n","
6
\n","
7
\n","
8
\n","
9
\n","
...
\n","
15
\n","
16
\n","
17
\n","
18
\n","
19
\n","
20
\n","
21
\n","
22
\n","
23
\n","
24
\n","
\n"," \n"," \n","
\n","
Tokens
\n","
<s>
\n","
▁2.000
\n","
▁Einwohner
\n","
n
\n","
▁an
\n","
▁der
\n","
▁Dan
\n","
zi
\n","
ger
\n","
▁Buch
\n","
...
\n","
▁Wo
\n","
i
\n","
wod
\n","
schaft
\n","
▁Po
\n","
mmer
\n","
n
\n","
▁
\n","
.
\n","
</s>
\n","
\n","
\n","
Word IDs
\n","
None
\n","
0
\n","
1
\n","
1
\n","
2
\n","
3
\n","
4
\n","
4
\n","
4
\n","
5
\n","
...
\n","
9
\n","
9
\n","
9
\n","
9
\n","
10
\n","
10
\n","
10
\n","
11
\n","
11
\n","
None
\n","
\n","
\n","
Label IDs
\n","
-100
\n","
0
\n","
0
\n","
-100
\n","
0
\n","
0
\n","
5
\n","
-100
\n","
-100
\n","
6
\n","
...
\n","
5
\n","
-100
\n","
-100
\n","
-100
\n","
6
\n","
-100
\n","
-100
\n","
0
\n","
-100
\n","
-100
\n","
\n","
\n","
Labels
\n","
IGN
\n","
O
\n","
O
\n","
IGN
\n","
O
\n","
O
\n","
B-LOC
\n","
IGN
\n","
IGN
\n","
I-LOC
\n","
...
\n","
B-LOC
\n","
IGN
\n","
IGN
\n","
IGN
\n","
I-LOC
\n","
IGN
\n","
IGN
\n","
O
\n","
IGN
\n","
IGN
\n","
\n"," \n","
\n","
4 rows × 25 columns
\n","
\n"," \n"," \n"," \n","\n"," \n","
\n","
\n"," "]},"metadata":{},"execution_count":28}]},{"cell_type":"markdown","source":["부분단어 표현을 마스킹하기 위해 ID로 -100을 선택한 이유로는 파이토치에 있는 크로스 엔트로피 손실 클래스의 ignore_index 속성 값이 -100이기 때문, 훈련하는 동안 이 인덱스는 무시되게 됨"],"metadata":{"id":"m89eNitd2-e6"}},{"cell_type":"code","source":["def tokenize_and_align_labels(examples):\n"," tokenized_inputs = xlmr_tokenizer(examples[\"tokens\"], truncation=True, is_split_into_words=True)\n"," \n"," labels = []\n"," for idx, label in enumerate(examples[\"ner_tags\"]):\n"," word_ids = tokenized_inputs.word_ids(batch_index=idx)\n"," previous_word_idx = None\n"," label_ids = []\n"," for word_idx in word_ids:\n"," if word_idx is None or word_idx == previous_word_idx:\n"," label_ids.append(-100)\n"," else:\n"," label_ids.append(label[word_idx])\n"," previous_word_idx = word_idx\n"," labels.append(label_ids)\n"," tokenized_inputs[\"labels\"] = labels\n"," return tokenized_inputs"],"metadata":{"id":"bmWsLeKjV-z2","executionInfo":{"status":"ok","timestamp":1675821109157,"user_tz":-540,"elapsed":25,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"execution_count":29,"outputs":[]},{"cell_type":"code","source":["def encode_panx_dataset(corpus):\n"," return corpus.map(tokenize_and_align_labels, batched=True, remove_columns=['langs', 'ner_tags', 'tokens'])"],"metadata":{"id":"1uvxuo0WXLfZ","executionInfo":{"status":"ok","timestamp":1675821109158,"user_tz":-540,"elapsed":26,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"execution_count":30,"outputs":[]},{"cell_type":"code","source":["panx_de_encoded = encode_panx_dataset(panx_ch[\"de\"])"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":113,"referenced_widgets":["0bf41f331c6347ce8234765a9fcafec9","2692a1f9e28f4c64a1a4fd2550891c13","4148c5ec326741988d19b1d8d0267a0b","df6cd3aa244640d2a78b48112e80bccb","8de43e7ba0a642c3adf25b2638faa5d5","c382f6836bbd400b858ea39956e2e5db","48aa12534f9843e3bbf5921c28653b58","d4c1121465e2434a8892e778a06942b3","1ed3f14248cd455b91a76bd2aa11889f","a9b1f253f089466d96411c9e7562df44","8a43e1fa5c354852b8218c5e8db69fb6","1c0d5ec20f0d42c6ad7fa2885c9be26c","7dece95e5cff46e282161be507beead5","b32512787c384ba682b283f5208eae16","92f6ba0adb9b44d5b4162c4ba62a02b4","e04c275119b64865bfd35e99aabee6d1","afe3bdd6130d47fba48a2841ef258e04","4ac033289560420ab03259fb6ffd20b1","10e064dff423490ca81202ace809a920","ab51d2a5d4e64ab8839ee72a5005d2e4","62201e8a763a4c07bf742defdf11deb3","c2f406629c894c3ab7d1ab0c573de517","0dbf0628de1a4e17a020f36300fd0bb9","96f57e7e3c4c4b16b4c1d4668a9458fc","5a6cd25a886d4a728eb5bedbfa77d991","bc2b0a8fcd8347acbbc58154d21c7b3f","c279a65ea1944618b945a9810ca3043f","c1603434742540d48ab49ec46046c0f0","e81dbce463ea47cc9f5bee10ffbb4def","933e4839e16f4bd8a87c246634bf1173","8d12cf18d4414d538ce8c242299c93b3","d4c960f718754d26b339d4e11371409f","60342e3d9d264b76bcedb75e75606b89"]},"id":"DDKva6SaXZ0i","executionInfo":{"status":"ok","timestamp":1675821111509,"user_tz":-540,"elapsed":2377,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"dae1d3e6-3916-4e4e-c8dd-55062fa0306f"},"execution_count":31,"outputs":[{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/13 [00:00, ?ba/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"0bf41f331c6347ce8234765a9fcafec9"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/7 [00:00, ?ba/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"1c0d5ec20f0d42c6ad7fa2885c9be26c"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/7 [00:00, ?ba/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"0dbf0628de1a4e17a020f36300fd0bb9"}},"metadata":{}}]},{"cell_type":"markdown","source":["# 성능 측정\n","NER 모델 평가는 텍스트 분류 모델 평가와 비슷. 일반적으로 정밀도, 재현율, F1-점수의 결과를 보고. 유일한 차이는 예측 하나를 정확하다고 판단하기 위해 한 개체명에 있는 모든 단어가 올바르게 예측되어야 한다는 점 \n"," \n","seqeval 라이브러리를 사용"],"metadata":{"id":"G19YlRxrX2do"}},{"cell_type":"code","source":["!pip install seqeval"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"fPg8R9AaYzo9","executionInfo":{"status":"ok","timestamp":1675821119967,"user_tz":-540,"elapsed":8465,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"374f35ae-a34d-4e8f-d33c-8449201699fb"},"execution_count":32,"outputs":[{"output_type":"stream","name":"stdout","text":["Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n","Collecting seqeval\n"," Downloading seqeval-1.2.2.tar.gz (43 kB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m43.6/43.6 KB\u001b[0m \u001b[31m2.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n","Requirement already satisfied: numpy>=1.14.0 in /usr/local/lib/python3.8/dist-packages (from seqeval) (1.21.6)\n","Requirement already satisfied: scikit-learn>=0.21.3 in /usr/local/lib/python3.8/dist-packages (from seqeval) (1.0.2)\n","Requirement already satisfied: scipy>=1.1.0 in /usr/local/lib/python3.8/dist-packages (from scikit-learn>=0.21.3->seqeval) (1.7.3)\n","Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.8/dist-packages (from scikit-learn>=0.21.3->seqeval) (3.1.0)\n","Requirement already satisfied: joblib>=0.11 in /usr/local/lib/python3.8/dist-packages (from scikit-learn>=0.21.3->seqeval) (1.2.0)\n","Building wheels for collected packages: seqeval\n"," Building wheel for seqeval (setup.py) ... \u001b[?25l\u001b[?25hdone\n"," Created wheel for seqeval: filename=seqeval-1.2.2-py3-none-any.whl size=16179 sha256=c763e2631784352be3bf6f1d8e2dc9e8819e6ff8c1582528886bfa3a8a170802\n"," Stored in directory: /root/.cache/pip/wheels/ad/5c/ba/05fa33fa5855777b7d686e843ec07452f22a66a138e290e732\n","Successfully built seqeval\n","Installing collected packages: seqeval\n","Successfully installed seqeval-1.2.2\n"]}]},{"cell_type":"code","source":["from seqeval.metrics import classification_report\n","\n","y_true = [[\"O\", \"O\", \"O\", \"B-MISC\", \"I-MISC\", \"I-MISC\", \"O\"], [\"B-PER\", \"I-PER\", \"O\"]]\n","y_pred = [[\"O\", \"O\", \"B-MISC\", \"I-MISC\", \"I-MISC\", \"I-MISC\", \"O\"], [\"B-PER\", \"I-PER\", \"O\"]]\n","\n","print(classification_report(y_true, y_pred))"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Os-Bhu0EYL-8","executionInfo":{"status":"ok","timestamp":1675821120368,"user_tz":-540,"elapsed":406,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"179b1fe3-9138-4606-ffda-79454d01bf50"},"execution_count":33,"outputs":[{"output_type":"stream","name":"stdout","text":[" precision recall f1-score support\n","\n"," MISC 0.00 0.00 0.00 1\n"," PER 1.00 1.00 1.00 1\n","\n"," micro avg 0.50 0.50 0.50 2\n"," macro avg 0.50 0.50 0.50 2\n","weighted avg 0.50 0.50 0.50 2\n","\n"]}]},{"cell_type":"markdown","source":["seqeval은 리스트의 리스트로 구성된 예측과 레이블을 입력받음. 이런 지표를 훈련 과정에 통합하려면 모델 출력을 seqeval가 기대하는 리스트로 변환하는 함수가 필요. 이를 위해 연속된 부분단어의 레이블 ID는 무시하는 작업이 필요"],"metadata":{"id":"i0OmBlByZSDh"}},{"cell_type":"code","source":["import numpy as np\n","\n","def align_predictions(predictions, label_ids):\n"," preds = np.argmax(predictions, axis=2)\n"," batch_size, seq_len = preds.shape\n"," labels_list, preds_list = [], []\n","\n"," for batch_idx in range(batch_size):\n"," example_labels, example_preds = [], []\n"," for seq_idx in range(seq_len):\n"," # 레이블 IDs = -100 무시\n"," if label_ids[batch_idx, seq_idx] != -100:\n"," example_labels.append(index2tag[label_ids[batch_idx][seq_idx]])\n"," example_preds.append(index2tag[preds[batch_idx][seq_idx]])\n","\n"," labels_list.append(example_labels)\n"," preds_list.append(example_preds)\n","\n"," return preds_list, labels_list"],"metadata":{"id":"4jybU_ppZhRQ","executionInfo":{"status":"ok","timestamp":1675821120368,"user_tz":-540,"elapsed":3,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"execution_count":34,"outputs":[]},{"cell_type":"markdown","source":["# XLM-RoBERTa 미세튜닝\n","PAN-X의 독일어 서브셋에 베이스 모델을 미세튜닝하고 프랑스어, 이태리어, 영어에서 제로샷 교차 언어 성능을 평가. 트랜스포머스 Trainer를 사용해 훈련 루프 처리"],"metadata":{"id":"U6UChFKpa9iq"}},{"cell_type":"code","source":["from transformers import TrainingArguments\n","\n","num_epochs = 3\n","batch_size = 24\n","logging_steps = len(panx_de_encoded[\"train\"])\n","model_name = f\"{xlmr_model_name}-finetuned-panx-de\"\n","training_args = TrainingArguments(output_dir=model_name, \n"," log_level=\"error\",\n"," num_train_epochs=num_epochs,\n"," per_device_train_batch_size=batch_size,\n"," per_device_eval_batch_size=batch_size,\n"," evaluation_strategy=\"epoch\",\n"," save_steps=1e6,\n"," weight_decay=0.01,\n"," disable_tqdm=False,\n"," logging_steps=logging_steps,\n"," push_to_hub=False)"],"metadata":{"id":"XdWVVYu5bJ9a","executionInfo":{"status":"ok","timestamp":1675821120368,"user_tz":-540,"elapsed":3,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"execution_count":35,"outputs":[]},{"cell_type":"markdown","source":["검증 세트에서 평가 지표를 어떻게 계산해야 할지 Trainer로 전달해야 함 "],"metadata":{"id":"gg6J8oMzcT5y"}},{"cell_type":"code","source":["from seqeval.metrics import f1_score\n","\n","def compute_metrics(eval_pred):\n"," y_pred, y_true = align_predictions(eval_pred.predictions, eval_pred.label_ids)\n"," return {\"f1\": f1_score(y_true, y_pred)}"],"metadata":{"id":"i39ycBuhcC9e","executionInfo":{"status":"ok","timestamp":1675821120368,"user_tz":-540,"elapsed":3,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"execution_count":36,"outputs":[]},{"cell_type":"markdown","source":["배치에서 가장 큰 시퀀스 길이로 입력 시퀀스를 패딩하도록 데이터 콜레이터(data collator)를 정의. 트랜스포머스는 토큰 분류를 위해 입력과 레이블을 패딩하는 전용 데이터 콜레이터를 제공"],"metadata":{"id":"Lhwpoa-Pcd1s"}},{"cell_type":"code","source":["from transformers import DataCollatorForTokenClassification\n","\n","data_collator = DataCollatorForTokenClassification(xlmr_tokenizer)"],"metadata":{"id":"lLfASUe6cmtH","executionInfo":{"status":"ok","timestamp":1675821120368,"user_tz":-540,"elapsed":2,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"execution_count":37,"outputs":[]},{"cell_type":"markdown","source":["레이블도 시퀀스이기에 레이블 패딩도 필수"],"metadata":{"id":"F5mwIWiPcz8e"}},{"cell_type":"markdown","source":["Trainer를 위해 매번 새로운 모델을 만들지 않도록 model_init() 함수 제작. train() 메서드를 호출시 이 함수가 호출되어 훈련되지 않은 모델을 로드"],"metadata":{"id":"OiTxzDyAc4NX"}},{"cell_type":"code","source":["def model_init():\n"," return (XLMRobertaForTokenClassification.from_pretrained(xlmr_model_name, config=xlmr_config).to(device))"],"metadata":{"id":"fHxrwxLYdChA","executionInfo":{"status":"ok","timestamp":1675821120368,"user_tz":-540,"elapsed":2,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"execution_count":38,"outputs":[]},{"cell_type":"markdown","source":["Encoding된 데이터셋과 함께 모든 정보를 Trainer에 전달"],"metadata":{"id":"MPGRlJimdoLF"}},{"cell_type":"code","source":["from transformers import Trainer\n","\n","trainer = Trainer(model_init=model_init,\n"," args=training_args,\n"," data_collator=data_collator,\n"," compute_metrics=compute_metrics,\n"," train_dataset=panx_de_encoded[\"train\"],\n"," eval_dataset=panx_de_encoded[\"validation\"],\n"," tokenizer=xlmr_tokenizer)"],"metadata":{"id":"FkzonrDedOZY","executionInfo":{"status":"ok","timestamp":1675821123421,"user_tz":-540,"elapsed":3055,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"execution_count":39,"outputs":[]},{"cell_type":"code","source":["trainer.train()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":259},"id":"dp6ZZb8RdswR","executionInfo":{"status":"ok","timestamp":1675821640752,"user_tz":-540,"elapsed":517333,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"ffbdff70-13ec-4e23-afff-4cbbcfcb0248"},"execution_count":40,"outputs":[{"output_type":"stream","name":"stderr","text":["/usr/local/lib/python3.8/dist-packages/transformers/optimization.py:306: FutureWarning: This implementation of AdamW is deprecated and will be removed in a future version. Use the PyTorch implementation torch.optim.AdamW instead, or set `no_deprecation_warning=True` to disable this warning\n"," warnings.warn(\n"]},{"output_type":"display_data","data":{"text/plain":[""],"text/html":["\n","
"]},"metadata":{}},{"output_type":"execute_result","data":{"text/plain":["TrainOutput(global_step=1575, training_loss=0.1560986812531002, metrics={'train_runtime': 513.6597, 'train_samples_per_second': 73.473, 'train_steps_per_second': 3.066, 'total_flos': 863012377186080.0, 'train_loss': 0.1560986812531002, 'epoch': 3.0})"]},"metadata":{},"execution_count":40}]},{"cell_type":"code","source":["text_de = \"Jeff Dean ist ein Informatiker bei Google in Kalifornien\"\n","tag_text(text_de, tags, trainer.model, xlmr_tokenizer)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":112},"id":"KhAcv-0Tg570","executionInfo":{"status":"ok","timestamp":1675821640752,"user_tz":-540,"elapsed":27,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"a3967115-e433-4c8b-a517-e363936451c8"},"execution_count":41,"outputs":[{"output_type":"execute_result","data":{"text/plain":[" 0 1 2 3 4 5 6 7 8 9 \\\n","Tokens ▁Jeff ▁De an ▁ist ▁ein ▁Informati ker ▁bei ▁Google \n","Tags O B-PER I-PER I-PER O O O O O B-ORG \n","\n"," 10 11 12 13 \n","Tokens ▁in ▁Kaliforni en \n","Tags O B-LOC I-LOC I-PER "],"text/html":["\n","
\n","
\n","
\n","\n","
\n"," \n","
\n","
\n","
0
\n","
1
\n","
2
\n","
3
\n","
4
\n","
5
\n","
6
\n","
7
\n","
8
\n","
9
\n","
10
\n","
11
\n","
12
\n","
13
\n","
\n"," \n"," \n","
\n","
Tokens
\n","
<s>
\n","
▁Jeff
\n","
▁De
\n","
an
\n","
▁ist
\n","
▁ein
\n","
▁Informati
\n","
ker
\n","
▁bei
\n","
▁Google
\n","
▁in
\n","
▁Kaliforni
\n","
en
\n","
</s>
\n","
\n","
\n","
Tags
\n","
O
\n","
B-PER
\n","
I-PER
\n","
I-PER
\n","
O
\n","
O
\n","
O
\n","
O
\n","
O
\n","
B-ORG
\n","
O
\n","
B-LOC
\n","
I-LOC
\n","
I-PER
\n","
\n"," \n","
\n","
\n"," \n"," \n"," \n","\n"," \n","
\n","
\n"," "]},"metadata":{},"execution_count":41}]},{"cell_type":"markdown","source":["# 오류 분석\n","모델의 실패 유형\n","1. 우연히 너무 많은 토큰을 마스킹, 일부 레이블도 마스킹하여 제대로 훈련되는 것처럼 손실이 감소\n","2. compute_metrics() 함수에 실제 성능을 과대평가하는 버그\n","3. NER에 0 클래스 또는 O개체명이 일반 클래스처럼 포함될 때가 존재\n","\n"," \n","\n","모델의 성능이 기대에 못 미칠 때 오류를 살펴보면, 유용한 통찰을 얻고 코드만 봐서는 찾기 힘든 버그를 발견하게 됨. \n","오류 분석을 위한 방법으로 **손실이 가장 큰 검증 샘플을 살펴보는 것**. 샘플 시퀀스의 토큰마다 손실을 계산"],"metadata":{"id":"kNA8C7eHhPfM"}},{"cell_type":"code","source":["from torch.nn.functional import cross_entropy\n","\n","def forward_pass_with_label(batch):\n"," # 리스트의 딕셔너리를 데이터 콜레이터에 적합한 딕셔너리의 리스트로 변환\n"," features = [dict(zip(batch, t)) for t in zip(*batch.values())]\n"," # 입력과 레이블을 패딩하고 모든 텐서를 장치에 배치\n"," batch = data_collator(features)\n"," input_ids = batch[\"input_ids\"].to(device)\n"," attention_mask = batch[\"attention_mask\"].to(device)\n"," labels = batch[\"labels\"].to(device)\n"," with torch.no_grad():\n"," # 데이터를 모델에 전달\n"," output = trainer.model(input_ids, attention_mask)\n"," # logit.size: [batch_size, sequence_length, classes]\n"," # 마지막 축을 따라 가장 큰 로짓 값을 가진 클래스를 선택\n"," predicted_label = torch.argmax(output.logits, axis=-1).cpu().numpy()\n"," # 배치 차원을 펼친 다음 토큰마다 손실을 계산\n"," loss = cross_entropy(output.logits.view(-1, 7), labels.view(-1), reduction=\"none\")\n"," # 배치 차원을 다시 만들고 넘파이 배열로 변환\n"," loss = loss.view(len(input_ids), -1).cpu().numpy()\n","\n"," return {\"loss\":loss, \"predicted_label\": predicted_label}"],"metadata":{"id":"6vAZdu1Nh1GH","executionInfo":{"status":"ok","timestamp":1675821640752,"user_tz":-540,"elapsed":7,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"execution_count":42,"outputs":[]},{"cell_type":"code","source":["valid_set = panx_de_encoded[\"validation\"]\n","valid_set = valid_set.map(forward_pass_with_label, batched=True, batch_size=32)\n","df = valid_set.to_pandas()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":86,"referenced_widgets":["4cc6e9d90ff749db80a80877c4ceb88b","898cd3c6298d42dc9d0bd51adcee9069","c3597b8ec6734c35b028daea5e4a3bbb","31d42d93cd534bb09fc0d962b63ae09e","84ef7a7c8fc342d48da529843f65f2fa","e1fadba579f04906bcf21ff823e366f9","b9c6e83d7b8f4ec48de17c75776fbf59","17d21e082a4e460c956158a271ad48ee","42c79b0e7b364da98319a4cd8522eb13","fbe1408c5e624cc9becac343bcbdfff0","0a17783cd6264c85b3d75c6cbfc189b3"]},"id":"7HHXhKiNq0h5","executionInfo":{"status":"ok","timestamp":1675821669245,"user_tz":-540,"elapsed":28500,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"8a803f54-b85a-4955-8245-fb8242ef7fb7"},"execution_count":43,"outputs":[{"output_type":"stream","name":"stderr","text":["WARNING:datasets.fingerprint:Parameter 'function'= of the transform datasets.arrow_dataset.Dataset._map_single couldn't be hashed properly, a random hash was used instead. Make sure your transforms and parameters are serializable with pickle or dill for the dataset fingerprinting and caching to work. If you reuse this transform, the caching mechanism will consider it to be different from the previous calls and recompute everything. This warning is only showed once. Subsequent hashing failures won't be showed.\n"]},{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/197 [00:00, ?ba/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"4cc6e9d90ff749db80a80877c4ceb88b"}},"metadata":{}}]},{"cell_type":"markdown","source":["- 토큰과 레이블이 여전히 ID로 인코딩됐으니 결과를 알아보기 쉽게 토큰과 레이블을 다시 문자로 변환\n","- 필터링에 사용하기 위해 -100인 패딩 토큰은 특별한 레이블인 IGN으로 할당\n","- loss와 predicted_label을 입력과 같은 길이로 잘라 패딩을 모두 제거"],"metadata":{"id":"SyIXWTwergT8"}},{"cell_type":"code","source":["index2tag[-100] = \"IGN\"\n","df[\"input_tokens\"] = df[\"input_ids\"].apply(lambda x: xlmr_tokenizer.convert_ids_to_tokens(x))\n","df[\"predicted_label\"] = df[\"predicted_label\"].apply(lambda x: [index2tag[i] for i in x])\n","df[\"labels\"] = df[\"labels\"].apply(lambda x: [index2tag[i] for i in x])\n","df[\"loss\"] = df.apply(lambda x: x['loss'][:len(x['input_ids'])], axis=1)\n","df[\"predicted_label\"] = df.apply(lambda x: x['predicted_label'][:len(x['input_ids'])], axis=1)\n","df.head(1)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":81},"id":"e_mgBFFrrdlO","executionInfo":{"status":"ok","timestamp":1675821669847,"user_tz":-540,"elapsed":621,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"934416ba-20b9-4270-d69a-2ee7580e6e07"},"execution_count":44,"outputs":[{"output_type":"execute_result","data":{"text/plain":[" input_ids attention_mask \\\n","0 [0, 10699, 11, 15, 16104, 1388, 2] [1, 1, 1, 1, 1, 1, 1] \n","\n"," labels \\\n","0 [IGN, B-ORG, IGN, I-ORG, I-ORG, I-ORG, IGN] \n","\n"," loss \\\n","0 [0.0, 0.01121267, 0.0, 0.012447174, 0.01018930... \n","\n"," predicted_label \\\n","0 [I-ORG, B-ORG, I-ORG, I-ORG, I-ORG, I-ORG, I-ORG] \n","\n"," input_tokens \n","0 [, ▁Ham, a, ▁(, ▁Unternehmen, ▁), ] "],"text/html":["\n","
\n","
\n","
\n","\n","
\n"," \n","
\n","
\n","
input_ids
\n","
attention_mask
\n","
labels
\n","
loss
\n","
predicted_label
\n","
input_tokens
\n","
\n"," \n"," \n","
\n","
0
\n","
[0, 10699, 11, 15, 16104, 1388, 2]
\n","
[1, 1, 1, 1, 1, 1, 1]
\n","
[IGN, B-ORG, IGN, I-ORG, I-ORG, I-ORG, IGN]
\n","
[0.0, 0.01121267, 0.0, 0.012447174, 0.01018930...
\n","
[I-ORG, B-ORG, I-ORG, I-ORG, I-ORG, I-ORG, I-ORG]
\n","
[<s>, ▁Ham, a, ▁(, ▁Unternehmen, ▁), </s>]
\n","
\n"," \n","
\n","
\n"," \n"," \n"," \n","\n"," \n","
\n","
\n"," "]},"metadata":{},"execution_count":44}]},{"cell_type":"markdown","source":["pandas.Series.explode() 함수를 사용하여 한줄 코드로 리스트에 있는 각 원소를 하나의 행으로 만들 수 있음. IGN으로 표시된 패딩 토큰의 손실이 0이므로 이를 제외"],"metadata":{"id":"HQu-saGms15V"}},{"cell_type":"code","source":["df_tokens = df.apply(pd.Series.explode)\n","df_tokens = df_tokens.query(\"labels != 'IGN'\")\n","df_tokens[\"loss\"] = df_tokens[\"loss\"].astype(float).round(2)\n","df_tokens.head(7)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":269},"id":"rYMEatIIs9Ye","executionInfo":{"status":"ok","timestamp":1675821715442,"user_tz":-540,"elapsed":408,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"4105c8c6-2760-4259-c2cb-95e01609f71b"},"execution_count":46,"outputs":[{"output_type":"execute_result","data":{"text/plain":[" input_ids attention_mask labels loss predicted_label input_tokens\n","0 10699 1 B-ORG 0.01 B-ORG ▁Ham\n","0 15 1 I-ORG 0.01 I-ORG ▁(\n","0 16104 1 I-ORG 0.01 I-ORG ▁Unternehmen\n","0 1388 1 I-ORG 0.01 I-ORG ▁)\n","1 56530 1 O 0.00 O ▁WE\n","1 83982 1 B-ORG 2.90 B-PER ▁Luz\n","1 10 1 I-ORG 2.83 I-PER ▁a"],"text/html":["\n","
\n"," "]},"metadata":{},"execution_count":48}]},{"cell_type":"markdown","source":["- 공백 토큰의 손실 총합이 가장 큼. 하지만 평균 손실은 다른 토큰에 비해 훨씬 낮아 모델이 이 토큰을 구분하는 데 큰 힘을 들이지 않는다는 의미\n","- 'in', 'von', 'der', 'und' 같은 단어가 비교적 자주 등장. 개체명과 함께 등장하거나 개체명의 일부인 경우가 많아 모델이 혼동하기 쉬움\n","- 단어 시작 부분의 괄호, 슬래시, 대문자는 드물지만 평균 손실이 매우 높음"],"metadata":{"id":"50cIVFjwxFYb"}},{"cell_type":"markdown","source":["레이블ID로 그룹핑해 각 클래스에 대한 손실도 확인 가능"],"metadata":{"id":"BsTGa7MmxdAq"}},{"cell_type":"code","source":["(\n"," df_tokens.groupby(\"labels\")[[\"loss\"]].agg([\"count\", \"mean\", \"sum\"]).droplevel(level=0, axis=1).sort_values(by=\"mean\", ascending=False).reset_index().round(2).T\n",")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":175},"id":"IYFkJNjHxcRA","executionInfo":{"status":"ok","timestamp":1675822050165,"user_tz":-540,"elapsed":533,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"52ab611b-889d-48f7-99b6-e23570e39959"},"execution_count":49,"outputs":[{"output_type":"execute_result","data":{"text/plain":[" 0 1 2 3 4 5 6\n","labels B-ORG I-LOC I-ORG B-LOC B-PER I-PER O\n","count 2683 1462 3820 3172 2893 4139 43648\n","mean 0.62 0.61 0.48 0.33 0.27 0.19 0.03\n","sum 1675.56 897.82 1826.57 1035.34 792.12 786.43 1337.71"],"text/html":["\n","
\n","
\n","
\n","\n","
\n"," \n","
\n","
\n","
0
\n","
1
\n","
2
\n","
3
\n","
4
\n","
5
\n","
6
\n","
\n"," \n"," \n","
\n","
labels
\n","
B-ORG
\n","
I-LOC
\n","
I-ORG
\n","
B-LOC
\n","
B-PER
\n","
I-PER
\n","
O
\n","
\n","
\n","
count
\n","
2683
\n","
1462
\n","
3820
\n","
3172
\n","
2893
\n","
4139
\n","
43648
\n","
\n","
\n","
mean
\n","
0.62
\n","
0.61
\n","
0.48
\n","
0.33
\n","
0.27
\n","
0.19
\n","
0.03
\n","
\n","
\n","
sum
\n","
1675.56
\n","
897.82
\n","
1826.57
\n","
1035.34
\n","
792.12
\n","
786.43
\n","
1337.71
\n","
\n"," \n","
\n","
\n"," \n"," \n"," \n","\n"," \n","
\n","
\n"," "]},"metadata":{},"execution_count":49}]},{"cell_type":"markdown","source":["B-ORG의 평균 손실이 가장 높음. 이는 모델이 조직 이름의 시작 부분을 결정하기가 어렵다는 의미"],"metadata":{"id":"CCI8APArxzUz"}},{"cell_type":"markdown","source":["토큰 분류의 오차 행렬"],"metadata":{"id":"venW3kIhx-q1"}},{"cell_type":"code","source":["from sklearn.metrics import ConfusionMatrixDisplay, confusion_matrix\n","\n","import matplotlib.pyplot as plt\n","\n","def plot_confusion_matrix(y_preds, y_true, labels):\n"," cm = confusion_matrix(y_true, y_preds, normalize=\"true\")\n"," fig, ax = plt.subplots(figsize=(6,6))\n"," disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=labels)\n"," disp.plot(cmap=\"Blues\", values_format=\".2f\", ax=ax, colorbar=False)\n"," plt.title(\"Normalized confusion matrix\")\n"," plt.show()\n","\n","plot_confusion_matrix(df_tokens[\"labels\"], df_tokens[\"predicted_label\"], tags.names)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":404},"id":"Rr_DPaOWyCBJ","executionInfo":{"status":"ok","timestamp":1675822306178,"user_tz":-540,"elapsed":588,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"737d11c2-6a7d-4c47-8477-7d67570ab268"},"execution_count":52,"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"cell_type":"markdown","source":["모델이 B-ORG와 I-ORG를 가장 많이 혼동하는 경향을 보임"],"metadata":{"id":"et1XMNfoyyVo"}},{"cell_type":"markdown","source":["토큰 수준에서의 오류를 조사했으니 높은 손실을 내는 시퀀스를 확인. \n","explode() 함수를 적용하기 전의 원래 DataFrame을 사용하여 토큰당 손실을 합산해 총 손실을 계산"],"metadata":{"id":"jIxU_vpQy7nn"}},{"cell_type":"code","source":["def get_samples(df):\n"," for _, row in df.iterrows():\n"," labels, preds, tokens, losses = [], [], [], []\n"," for i, mask in enumerate(row[\"attention_mask\"]):\n"," if i not in {0, len(row[\"attention_mask\"])}:\n"," labels.append(row[\"labels\"][i])\n"," preds.append(row[\"predicted_label\"][i])\n"," tokens.append(row[\"input_tokens\"][i])\n"," losses.append(f\"{row['loss'][i]:.2f}\")\n"," df_tmp = pd.DataFrame({\"tokens\": tokens, \"labels\": labels, \"preds\": preds, \"losses\": losses}).T\n"," yield df_tmp\n","\n","df[\"total_loss\"] = df[\"loss\"].apply(sum)\n","df_tmp = df.sort_values(by=\"total_loss\", ascending=False).head(3)\n","\n","for sample in get_samples(df_tmp):\n"," display(sample)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":490},"id":"gQ8-n0qQzErD","executionInfo":{"status":"ok","timestamp":1675822882048,"user_tz":-540,"elapsed":789,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"14c60418-8e39-4c8b-83de-e1190849dea6"},"execution_count":54,"outputs":[{"output_type":"display_data","data":{"text/plain":[" 0 1 2 3 4 5 6 7 8 9 \\\n","tokens ▁' ▁'' ▁Τ Κ ▁'' ▁' ▁' ▁'' ▁T ▁'' \n","labels O O O IGN O O B-LOC I-LOC I-LOC I-LOC \n","preds O O B-ORG B-ORG O O O O B-ORG O \n","losses 0.00 0.00 3.44 0.00 0.00 0.00 10.46 10.07 8.27 9.45 \n","\n"," 10 11 12 13 14 15 16 17 18 \n","tokens ▁' ri ▁'' ▁' k ▁'' ▁' ala \n","labels I-LOC IGN I-LOC I-LOC IGN I-LOC I-LOC IGN IGN \n","preds O O O O O O O O O \n","losses 10.15 0.00 9.87 10.14 0.00 10.09 10.17 0.00 0.00 "],"text/html":["\n","
\n","
\n","
\n","\n","
\n"," \n","
\n","
\n","
0
\n","
1
\n","
2
\n","
3
\n","
4
\n","
5
\n","
6
\n","
7
\n","
8
\n","
9
\n","
10
\n","
11
\n","
12
\n","
13
\n","
14
\n","
15
\n","
16
\n","
17
\n","
18
\n","
\n"," \n"," \n","
\n","
tokens
\n","
▁'
\n","
▁''
\n","
▁Τ
\n","
Κ
\n","
▁''
\n","
▁'
\n","
▁'
\n","
▁''
\n","
▁T
\n","
▁''
\n","
▁'
\n","
ri
\n","
▁''
\n","
▁'
\n","
k
\n","
▁''
\n","
▁'
\n","
ala
\n","
</s>
\n","
\n","
\n","
labels
\n","
O
\n","
O
\n","
O
\n","
IGN
\n","
O
\n","
O
\n","
B-LOC
\n","
I-LOC
\n","
I-LOC
\n","
I-LOC
\n","
I-LOC
\n","
IGN
\n","
I-LOC
\n","
I-LOC
\n","
IGN
\n","
I-LOC
\n","
I-LOC
\n","
IGN
\n","
IGN
\n","
\n","
\n","
preds
\n","
O
\n","
O
\n","
B-ORG
\n","
B-ORG
\n","
O
\n","
O
\n","
O
\n","
O
\n","
B-ORG
\n","
O
\n","
O
\n","
O
\n","
O
\n","
O
\n","
O
\n","
O
\n","
O
\n","
O
\n","
O
\n","
\n","
\n","
losses
\n","
0.00
\n","
0.00
\n","
3.44
\n","
0.00
\n","
0.00
\n","
0.00
\n","
10.46
\n","
10.07
\n","
8.27
\n","
9.45
\n","
10.15
\n","
0.00
\n","
9.87
\n","
10.14
\n","
0.00
\n","
10.09
\n","
10.17
\n","
0.00
\n","
0.00
\n","
\n"," \n","
\n","
\n"," \n"," \n"," \n","\n"," \n","
\n","
\n"," "]},"metadata":{}},{"output_type":"display_data","data":{"text/plain":[" 0 1 2 3 4 5 6 7 8 9 \\\n","tokens ▁'' 8 . ▁Juli ▁'' ▁: ▁Protest camp ▁auf ▁dem \n","labels B-ORG IGN IGN I-ORG I-ORG I-ORG I-ORG IGN I-ORG I-ORG \n","preds O O O O O O O O O O \n","losses 8.55 0.00 0.00 8.53 7.80 8.47 7.80 0.00 9.04 9.79 \n","\n"," 10 11 12 13 14 15 16 17 \n","tokens ▁Gelände ▁der ▁Republika n ischen ▁Gar de \n","labels I-ORG I-ORG I-ORG IGN IGN I-ORG IGN IGN \n","preds O O B-ORG I-ORG I-ORG I-ORG I-ORG O \n","losses 8.70 7.25 5.87 0.00 0.00 0.01 0.00 0.00 "],"text/html":["\n","
\n"," "]},"metadata":{}}]},{"cell_type":"markdown","source":["United Nations와 Central African Republic 이 모두 사람(PER)으로 레이블링 됨\n"," \n","PAN-X 데이터셋의 레이블이 자동으로 생성된것으로 보임. 이런 레이블을 '실버 스탠다드(silver standard)'라 함(사람이 생성한 레이블은 골드 스탠다드(gold standard)라 함)\n"," \n","괄호와 슬래시의 손실이 비교적 높음"],"metadata":{"id":"pO2taj-T1C9r"}},{"cell_type":"markdown","source":["# 교차 언어 전이\n","독일어에서 XLM-R을 미세 튜닝 했으므로 Trainer 클래스의 predict() 메서드를 사용해 다른 언어로 전이되는 능력을 평가"],"metadata":{"id":"J2fULCVG11Ff"}},{"cell_type":"code","source":["def get_f1_score(trainer, dataset):\n"," return trainer.predict(dataset).metrics[\"test_f1\"]"],"metadata":{"id":"HilLTf3k19gR","executionInfo":{"status":"ok","timestamp":1675823275711,"user_tz":-540,"elapsed":514,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"execution_count":55,"outputs":[]},{"cell_type":"markdown","source":["테스트 세트의 성능을 평가"],"metadata":{"id":"rAGw8lNS2gwz"}},{"cell_type":"code","source":["f1_scores = defaultdict(dict)\n","f1_scores[\"de\"][\"de\"] = get_f1_score(trainer, panx_de_encoded[\"test\"])\n","print(f\"[de] 데이터셋에서 [de] 모델의 F1 점수: {f1_scores['de']['de']:.3f}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":34},"id":"3Xxms1Eq2i85","executionInfo":{"status":"ok","timestamp":1675823425440,"user_tz":-540,"elapsed":18895,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"9b8c1ea4-a2a2-4d2d-f01e-af6e9398b8a6"},"execution_count":57,"outputs":[{"output_type":"display_data","data":{"text/plain":[""],"text/html":[]},"metadata":{}},{"output_type":"stream","name":"stdout","text":["[de] 데이터셋에서 [de] 모델의 F1 점수: 0.867\n"]}]},{"cell_type":"code","source":["# 프랑스어에서 점수 확인\n","text_fr = \"Jeff Dean est informaticien chez Google en californie\"\n","tag_text(text_fr, tags, trainer.model, xlmr_tokenizer)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":112},"id":"E_6LJ02q3DUC","executionInfo":{"status":"ok","timestamp":1675823477858,"user_tz":-540,"elapsed":722,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"567ca3c6-2f71-41d3-f85f-e38b489897fb"},"execution_count":58,"outputs":[{"output_type":"execute_result","data":{"text/plain":[" 0 1 2 3 4 5 6 7 8 \\\n","Tokens ▁Jeff ▁De an ▁est ▁informatic ien ▁chez ▁Google \n","Tags I-PER B-PER I-PER I-PER O O O O B-ORG \n","\n"," 9 10 11 12 13 \n","Tokens ▁en ▁cali for nie \n","Tags O B-LOC I-LOC I-LOC I-PER "],"text/html":["\n","
\n","
\n","
\n","\n","
\n"," \n","
\n","
\n","
0
\n","
1
\n","
2
\n","
3
\n","
4
\n","
5
\n","
6
\n","
7
\n","
8
\n","
9
\n","
10
\n","
11
\n","
12
\n","
13
\n","
\n"," \n"," \n","
\n","
Tokens
\n","
<s>
\n","
▁Jeff
\n","
▁De
\n","
an
\n","
▁est
\n","
▁informatic
\n","
ien
\n","
▁chez
\n","
▁Google
\n","
▁en
\n","
▁cali
\n","
for
\n","
nie
\n","
</s>
\n","
\n","
\n","
Tags
\n","
I-PER
\n","
B-PER
\n","
I-PER
\n","
I-PER
\n","
O
\n","
O
\n","
O
\n","
O
\n","
B-ORG
\n","
O
\n","
B-LOC
\n","
I-LOC
\n","
I-LOC
\n","
I-PER
\n","
\n"," \n","
\n","
\n"," \n"," \n"," \n","\n"," \n","
\n","
\n"," "]},"metadata":{},"execution_count":58}]},{"cell_type":"code","source":["def evaluate_lang_performance(lang, trainer):\n"," panx_ds = encode_panx_dataset(panx_ch[lang])\n"," return get_f1_score(trainer, panx_ds[\"test\"])\n","\n","f1_scores[\"de\"][\"fr\"] = evaluate_lang_performance(\"fr\", trainer)\n","print(f\"[fr] 데이터셋에서 [de]모델의 F1 점수: {f1_scores['de']['fr']:.3f}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":130,"referenced_widgets":["2ea4ca5a4cae4e34a6110d3e9d88c651","91bda3f45e6c4e85a09ed28d5289c696","bfd5babd9bc84ddfa5c6128295166523","68fb9a2ada674f3d86c8af1f8ca42294","4ea838d6f2f045ff9aa15422ded0e4c9","bb67aae5d54d42c699ccbbc7d3e3d55b","c7c6dae6f18c471c97c554070b51bc4c","9db304751d0a4e25bca672129340ac4a","4e6377999bcd45fd947ffff3204aa56b","2247badab8cd4517bcf9e31b1d5714da","cd6a61a9d1ea402e976ed526792cd16d","94ceb13d56594d3f99d3a03abced58cc","d99fd5f7c40443678da1082688c42c65","1bd42bc9adbc4857ae37e1c0b0b0b6c5","c1e2a78143484aea8f371e11c69ab6e3","f8b527cfca1742578a268ad2b607a872","2e16d295cf4e4cbc9d509f9c26e6ee06","65edf3b8401e47eb96a50a2cdbf9a662","4db9ba3f1aff47a99f307d3d9fa41a6d","74dabcf2946a4b6dbf9af8fe2e264ef8","e2a450d30a654f57a00194b9c59b0419","eef29186386d49b8a6db1a4cd2b6534c","1a3cfbc170a245b19ffe0fa947628a7e","94840fc04ab14cd59fee3dc4c604a2a5","7541382dc9c44afdbfa3f41e3633a0e4","566b0e89a9bc4bb5b238178f8d8ae0a6","9bca7b9835e845a3be6371a04c77ad81","edd2a3b1783d48f2be1acfd71f1c8bb4","90f2604c031b4b279e069ea7d2881c1a","24530917c4f54d44a4341f0c84fbab06","7b103fd3144f4eb8b733cb65ec51c91f","4de7e750ea0f407a9b5b205421147d50","ebd1823852cc4db588f99706e590343a"]},"id":"pNGBR4ap3kb0","executionInfo":{"status":"ok","timestamp":1675823696812,"user_tz":-540,"elapsed":6427,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"663bdfa2-adf8-4aef-9be0-6785dfd392c0"},"execution_count":59,"outputs":[{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/5 [00:00, ?ba/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"2ea4ca5a4cae4e34a6110d3e9d88c651"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/3 [00:00, ?ba/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"94ceb13d56594d3f99d3a03abced58cc"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/3 [00:00, ?ba/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"1a3cfbc170a245b19ffe0fa947628a7e"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":[""],"text/html":[]},"metadata":{}},{"output_type":"stream","name":"stdout","text":["[fr] 데이터셋에서 [de]모델의 F1 점수: 0.696\n"]}]},{"cell_type":"code","source":["f1_scores[\"de\"][\"it\"] = evaluate_lang_performance(\"it\", trainer)\n","print(f\"[fr] 데이터셋에서 [de]모델의 F1 점수: {f1_scores['de']['it']:.3f}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":130,"referenced_widgets":["195e10dbbb5b48ab9e398a66758dde13","d35d0b468d914833a56e4fcd52aca4e8","d146b5d96e45412d97f5079b140930e6","4461809827d74d86ad4eedb80d42942d","ba555485343d4f399028b953501f71ed","f96d049dddc142e78dbc2d63de5f8901","69080edf86894d588459022e04b3a423","71116a1c3046472ebd41de2a251c9b4f","c109c485393a4ca0873a72868a39936c","5af63ad216444ffbbbcd529af95cb22b","635fc65327a5438594ce1473362e8200","930adae80e9d4e9999acee0c4fc323e4","56d8530176d140c19704c0bd74613441","90f26840fb2c46448d33fcea56bad086","64a431cd1ace4a6f94a07a6a5cb703a6","b310cb126eb7460cb424ac80ffded79e","9701bf14e9784508bb3f12295aba919e","235ace930bb44693b9fe92a781bcf376","197ebb4e52f24882af7bd0d39095aea6","60908eeb9bad47ad9165e195b2cf92f9","08d772af60f6440a802b0b412b287698","e9de5adfeec2456fbb81305ecd597480","eacf66ae9ce54d368c4418c72c421860","aa3195e2c70d4e709cdcf50c49e8dca4","6ad96368e58c43b688eb5d41df83878f","31dcedf6b7d34474a5bd0f95ddb6837c","fa1d95ea5db140a1b8f79ff4ad1f9773","438c35fceffa4c0e96151cc1e28ac273","0ca091f5848644c189ed0c13be310b0e","0e6981685a534d8a9577361131ed4b5e","b8831dc27dbe4052b94d94c214ca947e","61447819912d4ff399f1e411dbce3229","36933e871b114325836b7a7f5d3408ca"]},"id":"XZq7n6UW4GYQ","executionInfo":{"status":"ok","timestamp":1675823725336,"user_tz":-540,"elapsed":2847,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"e43e74b3-0e36-4861-8a33-ad5a7fc17c8e"},"execution_count":60,"outputs":[{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/2 [00:00, ?ba/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"195e10dbbb5b48ab9e398a66758dde13"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/1 [00:00, ?ba/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"930adae80e9d4e9999acee0c4fc323e4"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/1 [00:00, ?ba/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"eacf66ae9ce54d368c4418c72c421860"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":[""],"text/html":[]},"metadata":{}},{"output_type":"stream","name":"stdout","text":["[fr] 데이터셋에서 [de]모델의 F1 점수: 0.656\n"]}]},{"cell_type":"code","source":["f1_scores[\"de\"][\"en\"] = evaluate_lang_performance(\"en\", trainer)\n","print(f\"[en] 데이터셋에서 [de]모델의 F1 점수: {f1_scores['de']['en']:.3f}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"aYeah7_J4MVv","executionInfo":{"status":"ok","timestamp":1675823768887,"user_tz":-540,"elapsed":1802,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"483cc49b-a88f-435c-8c9f-ed059e44873f"},"execution_count":62,"outputs":[{"output_type":"stream","name":"stderr","text":["WARNING:datasets.arrow_dataset:Loading cached processed dataset at /root/.cache/huggingface/datasets/xtreme/PAN-X.en/1.0.0/29f5d57a48779f37ccb75cb8708d1095448aad0713b425bdc1ff9a4a128a56e4/cache-67b25ecca7eb6275.arrow\n","WARNING:datasets.arrow_dataset:Loading cached processed dataset at /root/.cache/huggingface/datasets/xtreme/PAN-X.en/1.0.0/29f5d57a48779f37ccb75cb8708d1095448aad0713b425bdc1ff9a4a128a56e4/cache-47a0aa212a54f269.arrow\n","WARNING:datasets.arrow_dataset:Loading cached processed dataset at /root/.cache/huggingface/datasets/xtreme/PAN-X.en/1.0.0/29f5d57a48779f37ccb75cb8708d1095448aad0713b425bdc1ff9a4a128a56e4/cache-38556abcbf0fe146.arrow\n"]},{"output_type":"display_data","data":{"text/plain":[""],"text/html":[]},"metadata":{}},{"output_type":"stream","name":"stdout","text":["[en] 데이터셋에서 [de]모델의 F1 점수: 0.594\n"]}]},{"cell_type":"markdown","source":["## 제로샷 전이가 유용할때\n","프랑스어 말뭉치로 훈련 세트의 크기를 증가시키면서 XLM-R을 미세 튜닝해 독일어 XLM-R로 교차 언어 전이한 것보다 나은 결과를 내는 훈련 세트 크기를 구한 후 실제로 레이블링된 데이터를 더 많이 수집해야 하는지 판단"],"metadata":{"id":"XKOxtsBn4YAF"}},{"cell_type":"code","source":["def train_on_subset(dataset, num_samples):\n"," train_ds = dataset[\"train\"].shuffle(seed=42).select(range(num_samples))\n"," valid_ds = dataset[\"validation\"]\n"," test_ds = dataset[\"test\"]\n"," training_args.logging_steps = len(train_ds) // batch_size\n","\n"," trainer = Trainer(model_init=model_init, \n"," args=training_args, \n"," data_collator=data_collator,\n"," compute_metrics=compute_metrics,\n"," train_dataset=train_ds,\n"," eval_dataset=valid_ds,\n"," tokenizer=xlmr_tokenizer)\n"," trainer.train()\n"," \n"," f1_score = get_f1_score(trainer, test_ds)\n"," return pd.DataFrame.from_dict({\"num_samples\": [len(train_ds)], \"f1_score\": [f1_score]})"],"metadata":{"id":"yNJ8zAd346gI","executionInfo":{"status":"ok","timestamp":1675824167014,"user_tz":-540,"elapsed":514,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"execution_count":63,"outputs":[]},{"cell_type":"markdown","source":["독일어 말뭉치 미세튜닝처럼 프랑스어 말뭉치를 입력 ID, 어텐션 마스크, 레이블 ID로 인코딩"],"metadata":{"id":"QMDf11Wr59rN"}},{"cell_type":"code","source":["panx_fr_encoded = encode_panx_dataset(panx_ch[\"fr\"])"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":104,"referenced_widgets":["30c6a6fbd2944377ace47d48bc4a4aea","6af4cd75f04b4a6abed43abd8f3b30a3","dbf5ba978d06434ab1910c2f8e932f48","a18cc967159849caac2877ce9b3dc6a2","66200da357d74e4fb357f1f561d01cad","0f439a2b3fba46f3a60f1ca4762becee","472c551e7eba4817affcb192af57e973","1822ae06b53641028266009060997372","c2bc8eb70e324e83906f1990f9033cad","3b0af0519c10406ea44b7f4bb812f6a1","92da5753833b4007b2194cbe6715c4ff"]},"id":"-mMv0ERZ6EAB","executionInfo":{"status":"ok","timestamp":1675824242235,"user_tz":-540,"elapsed":1284,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"22dd73df-4199-4203-f4a9-b7f83b136485"},"execution_count":64,"outputs":[{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/5 [00:00, ?ba/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"30c6a6fbd2944377ace47d48bc4a4aea"}},"metadata":{}},{"output_type":"stream","name":"stderr","text":["WARNING:datasets.arrow_dataset:Loading cached processed dataset at /root/.cache/huggingface/datasets/xtreme/PAN-X.fr/1.0.0/29f5d57a48779f37ccb75cb8708d1095448aad0713b425bdc1ff9a4a128a56e4/cache-6c6f6ff4a59e7dd1.arrow\n","WARNING:datasets.arrow_dataset:Loading cached processed dataset at /root/.cache/huggingface/datasets/xtreme/PAN-X.fr/1.0.0/29f5d57a48779f37ccb75cb8708d1095448aad0713b425bdc1ff9a4a128a56e4/cache-bd9403b1b214a85b.arrow\n"]}]},{"cell_type":"code","source":["metrics_df = train_on_subset(panx_fr_encoded, 250)\n","metrics_df"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":288},"id":"fAIY-gam6KWH","executionInfo":{"status":"ok","timestamp":1675824313205,"user_tz":-540,"elapsed":35927,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"bcf8e919-39fe-4664-cf9b-787f0a37e2f9"},"execution_count":65,"outputs":[{"output_type":"stream","name":"stderr","text":["/usr/local/lib/python3.8/dist-packages/transformers/optimization.py:306: FutureWarning: This implementation of AdamW is deprecated and will be removed in a future version. Use the PyTorch implementation torch.optim.AdamW instead, or set `no_deprecation_warning=True` to disable this warning\n"," warnings.warn(\n"]},{"output_type":"display_data","data":{"text/plain":[""],"text/html":["\n","
\n"," "]},"metadata":{},"execution_count":65}]},{"cell_type":"markdown","source":["샘플 250개 사용시 프랑스어에서 미세 튜닝한 성능이 독일어에서 제로샷 전이로 얻은 결과보다 떨어짐\n"," \n","\n","훈련 세트 크기를 늘릴 경우 확인"],"metadata":{"id":"qgCQcAHU6gzI"}},{"cell_type":"code","source":["for num_samples in [500, 1000, 2000, 4000]:\n"," metrics_df = metrics_df.append(train_on_subset(panx_fr_encoded, num_samples), ignore_index=True)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":751},"id":"PaHHmz6Z6on2","executionInfo":{"status":"ok","timestamp":1675824780020,"user_tz":-540,"elapsed":349629,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"37a1da11-39c5-4708-d265-60192b1b6daf"},"execution_count":66,"outputs":[{"output_type":"stream","name":"stderr","text":["WARNING:datasets.arrow_dataset:Loading cached shuffled indices for dataset at /root/.cache/huggingface/datasets/xtreme/PAN-X.fr/1.0.0/29f5d57a48779f37ccb75cb8708d1095448aad0713b425bdc1ff9a4a128a56e4/cache-6b17d58cd0d6e4ba.arrow\n","/usr/local/lib/python3.8/dist-packages/transformers/optimization.py:306: FutureWarning: This implementation of AdamW is deprecated and will be removed in a future version. Use the PyTorch implementation torch.optim.AdamW instead, or set `no_deprecation_warning=True` to disable this warning\n"," warnings.warn(\n"]},{"output_type":"display_data","data":{"text/plain":[""],"text/html":["\n","
\n"," \n"," \n"," [63/63 00:30, Epoch 3/3]\n","
\n","
\n"," \n","
\n","
Epoch
\n","
Training Loss
\n","
Validation Loss
\n","
F1
\n","
\n"," \n"," \n","
\n","
1
\n","
1.492500
\n","
1.051098
\n","
0.185071
\n","
\n","
\n","
2
\n","
0.899900
\n","
0.705176
\n","
0.569553
\n","
\n","
\n","
3
\n","
0.587300
\n","
0.584122
\n","
0.618641
\n","
\n"," \n","
"]},"metadata":{}},{"output_type":"display_data","data":{"text/plain":[""],"text/html":[]},"metadata":{}},{"output_type":"stream","name":"stderr","text":["WARNING:datasets.arrow_dataset:Loading cached shuffled indices for dataset at /root/.cache/huggingface/datasets/xtreme/PAN-X.fr/1.0.0/29f5d57a48779f37ccb75cb8708d1095448aad0713b425bdc1ff9a4a128a56e4/cache-6b17d58cd0d6e4ba.arrow\n"]},{"output_type":"display_data","data":{"text/plain":[""],"text/html":["\n","
\n"," \n"," \n"," [126/126 00:46, Epoch 3/3]\n","
\n","
\n"," \n","
\n","
Epoch
\n","
Training Loss
\n","
Validation Loss
\n","
F1
\n","
\n"," \n"," \n","
\n","
1
\n","
1.205300
\n","
0.606873
\n","
0.550045
\n","
\n","
\n","
2
\n","
0.481400
\n","
0.425944
\n","
0.702297
\n","
\n","
\n","
3
\n","
0.330100
\n","
0.390302
\n","
0.704059
\n","
\n"," \n","
"]},"metadata":{}},{"output_type":"display_data","data":{"text/plain":[""],"text/html":[]},"metadata":{}},{"output_type":"stream","name":"stderr","text":["WARNING:datasets.arrow_dataset:Loading cached shuffled indices for dataset at /root/.cache/huggingface/datasets/xtreme/PAN-X.fr/1.0.0/29f5d57a48779f37ccb75cb8708d1095448aad0713b425bdc1ff9a4a128a56e4/cache-6b17d58cd0d6e4ba.arrow\n"]},{"output_type":"display_data","data":{"text/plain":[""],"text/html":["\n","
\n"," \n"," \n"," [252/252 01:19, Epoch 3/3]\n","
\n","
\n"," \n","
\n","
Epoch
\n","
Training Loss
\n","
Validation Loss
\n","
F1
\n","
\n"," \n"," \n","
\n","
1
\n","
0.805700
\n","
0.408441
\n","
0.737765
\n","
\n","
\n","
2
\n","
0.331000
\n","
0.350425
\n","
0.780576
\n","
\n","
\n","
3
\n","
0.217100
\n","
0.333629
\n","
0.810279
\n","
\n"," \n","
"]},"metadata":{}},{"output_type":"display_data","data":{"text/plain":[""],"text/html":[]},"metadata":{}},{"output_type":"stream","name":"stderr","text":["WARNING:datasets.arrow_dataset:Loading cached shuffled indices for dataset at /root/.cache/huggingface/datasets/xtreme/PAN-X.fr/1.0.0/29f5d57a48779f37ccb75cb8708d1095448aad0713b425bdc1ff9a4a128a56e4/cache-6b17d58cd0d6e4ba.arrow\n"]},{"output_type":"display_data","data":{"text/plain":[""],"text/html":["\n","
\n"," \n"," \n"," [501/501 02:24, Epoch 3/3]\n","
\n","
\n"," \n","
\n","
Epoch
\n","
Training Loss
\n","
Validation Loss
\n","
F1
\n","
\n"," \n"," \n","
\n","
1
\n","
0.605400
\n","
0.337464
\n","
0.781681
\n","
\n","
\n","
2
\n","
0.271200
\n","
0.285458
\n","
0.813073
\n","
\n","
\n","
3
\n","
0.182100
\n","
0.287294
\n","
0.833361
\n","
\n"," \n","
"]},"metadata":{}},{"output_type":"display_data","data":{"text/plain":[""],"text/html":[]},"metadata":{}}]},{"cell_type":"code","source":["fig, ax = plt.subplots()\n","ax.axhline(f1_scores[\"de\"][\"fr\"], ls=\"--\", color=\"r\")\n","metrics_df.set_index(\"num_samples\").plot(ax=ax)\n","plt.legend([\"Zero-shot from de\", \"Fine-tuned on fr\"], loc=\"lower right\")\n","plt.ylim((0,1))\n","plt.xlabel(\"Number of Training Samples\")\n","plt.ylabel(\"F1 Score\")\n","plt.show()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":283},"id":"vgzTqZib7Dij","executionInfo":{"status":"ok","timestamp":1675824867616,"user_tz":-540,"elapsed":729,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"3a949aca-49c3-4812-96ea-8f03f2e063c4"},"execution_count":67,"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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s3oMKSkple9TUlLqjKe2r4HWdcyOlpqGRCRuduzYwXXXXcczzzxDVlZWlWXnn38+Tz/9NEVFRQAUFBSwZUvNIsTjx49nxowZlJWVsXXrVubOncvo0aP53ve+V9kJ3bVrV9avX09ubi533nkno0aN4oMPPqgzrv79+7Np0ybWrVsHwLPPPsuZZ54JQFZWVmX/wuEYP358ZZPRmjVr+Oijj+jfv/9hbweCu5sXXngBoHKb0PBjdrh0RyAicfPb3/6WLVu2MGXKlCrz7777bq644gpWr17N2LFjgeArks899xypqVWf/r/kkkuYP38+Q4cOxcz4+c9/zvHHH19jX4888gizZ88mJSWFQYMGccEFFzB//vxa48rIyOD3v/89X/3qVyktLWXUqFHccMMNAEyePJkJEyZU9hU01I033siUKVPIzc0lLS2N6dOnV7kTOByPPvooV111FQ888ACTJh0c4feLX/xircfs2GOPPaL9VLCKHvTmYuTIkZ6Xl5foMESahdWrV3PyyScnOgxpYrX93s1sobuPrG19NQ2JiEScEoGISMQpEYiIRJwSgYhIxCkRiIhEnBKBiEjEKRGISFylpqZWKUO9adMmTjvttEbZ9s6dO/lNRdG8ODvrrLOIx1fXr7zySoYMGcIvf/nLRt92Q+mBMhGJqzZt2rBkyZIq8+bNm9co265IBDfeeGOjbK+pffrppyxYsKDyCedYpaWlpKU1zSlaiUAkIn7815Ws+nhXo25zYNf2/OiiQYf9uXbt2lFUVMScOXO47777yMnJYcWKFYwYMYLnnnsOM2PhwoXcdtttFBUVkZOTw/Tp06tU4gS46667WL9+PcOGDeO8887jwgsv5KGHHuLVV18F4KabbmLkyJFce+219OrVi2uuuYa//vWvlJSU8NJLLzFgwAD27NnDzTffzIoVKygpKeG+++5j0qRJ7Nu3j+uuu46lS5cyYMCAOgeiefPNN/nBD35Q+YTy448/TuvWrevcX6wvfvGLFBQUMGzYMB577DGmTp3KsGHDKgvt3X777Yd9bI+EmoZEJK727dtX2Sx0ySWX1FheW5nokpISbr75Zl5++WUWLlzIt771Le65554an/3Zz35G3759WbJkCQ8++OAhY8nJyWHRokVMmTKFhx56CICf/vSnnHPOObz//vvMnj2bO+64gz179vD444+TmZnJ6tWr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\n"},"metadata":{"needs_background":"light"}}]},{"cell_type":"markdown","source":["훈련 샘플이 약 750개일때까지는 제로샷이 앞섬 \n","문서를 일일이 레이블링 하는 비용을 생각했을때 제로샷이 경제적으로 더 우위를 점하고 괜찮음"],"metadata":{"id":"JIalkzgV7gFI"}},{"cell_type":"markdown","source":["# 다국어에서 동시에 미세튜닝하기\n","성능 감소 폭을 줄이는 방법 하나는 다국어에서 동시에 미세튜닝을 하는것"],"metadata":{"id":"sOkBGZr-7_Pv"}},{"cell_type":"code","source":["from datasets import concatenate_datasets\n","\n","def concatenate_splits(corpora):\n"," multi_corpus = DatasetDict()\n"," for split in corpora[0].keys():\n"," multi_corpus[split] = concatenate_datasets([corpus[split] for corpus in corpora]).shuffle(seed=42)\n"," return multi_corpus\n","\n","panx_de_fr_encoded = concatenate_splits([panx_de_encoded, panx_fr_encoded])"],"metadata":{"id":"Vvfd7NRp8ElJ","executionInfo":{"status":"ok","timestamp":1675824873243,"user_tz":-540,"elapsed":2,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}}},"execution_count":68,"outputs":[]},{"cell_type":"code","source":["training_args.logging_steps = len(panx_de_fr_encoded[\"train\"]) // batch_size\n","training_args.push_to_hub = False\n","training_args.output_dir = \"xlm-roberta-base-finetuned-panx-de-fr\"\n","\n","trainer = Trainer(model_init=model_init,\n"," args=training_args,\n"," data_collator=data_collator,\n"," compute_metrics=compute_metrics,\n"," tokenizer=xlmr_tokenizer,\n"," train_dataset=panx_de_fr_encoded[\"train\"],\n"," eval_dataset=panx_de_fr_encoded[\"validation\"])\n","\n","trainer.train()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":259},"id":"prfwfMh68nhG","executionInfo":{"status":"ok","timestamp":1675825757936,"user_tz":-540,"elapsed":700206,"user":{"displayName":"HanGyo Jung","userId":"11224950994115057744"}},"outputId":"db544003-a225-4230-81f4-0f0c4c931d26"},"execution_count":69,"outputs":[{"output_type":"stream","name":"stderr","text":["/usr/local/lib/python3.8/dist-packages/transformers/optimization.py:306: FutureWarning: This implementation of AdamW is deprecated and will be removed in a future version. Use the PyTorch implementation torch.optim.AdamW instead, or set `no_deprecation_warning=True` to disable this warning\n"," warnings.warn(\n"]},{"output_type":"display_data","data":{"text/plain":[""],"text/html":["\n","