Introduktion af TensorFlow Similarity

Kildeknude: 1079311

Introduktion af TensorFlow Similarity

TensorFlow Similarity er et nyligt udgivet bibliotek fra Google, der letter træning, indeksering og forespørgsel i lighedsmodeller. Se mere her.


Ofte skal vi kunne finde ting, der ligner andre ting. lighedssøgning er en nyttig teknik til at gøre det. Inden for datavidenskab, kontrastiv læring kan bruges til at bygge lighedsmodeller, som derefter kan bruges til lighedssøgning.

Lighedsmodeller er trænet til at udskrive indlejringer, hvor elementer er indlejret i et metrisk rum, hvilket resulterer i en situation, hvor lignende elementer er tæt på hinanden og længere væk fra uens elementer. Dette er direkte relateret - både intuitivt og matematisk - til ordindlejringer, som du allerede er bekendt med; Paris og London er tæt på hinanden, ligesom sennep og ketchup, men disse 2 grupper er forholdsvis længere fra hinanden.

På samme måde kunne vi bruge en lighedsmodel til at sammenligne f.eks. køretøjer. For eksempel ville BMW og Mercedes sedans være indlejret tæt på hinanden, mens Yamaha og Kawasaki motorcykler ville finde sig selv tæt indlejret. Motorcyklerne ville være relativt længere fra sedanerne, som til gengæld ville blive fjernet fra andre forskellige køretøjer såsom både, autocampere, varevogne, cykler osv.

Figur
Oversigt over lighedsmodeller (kilde)

 

Deep learning bruges til at træne de neurale netværk, som ofte bliver brugt til disse lighedsmodeller. For at lette træningen af ​​sådanne modeller har Google for ganske nylig udgivet TensorFlow lighed.

Tensorflow Similarity tilbyder state-of-the-art algoritmer til metrisk læring og alle de nødvendige komponenter til at forske, træne, evaluere og betjene lighedsbaserede modeller.

Efter at en model er trænet, opbygges et indlejringsindeks for at lette søgningen. Til søgning bruger TF Similarity Fast Approximate Nearest Neighbor-søgning (ANN) til at hente de nærmeste matches. Da afstanden mellem indlejrede elementer er en funktion af en afstandsmetrik, er opslag både hurtige og nøjagtige ved hjælp af ANN.

Lighedsmodeller er også fleksible og kan udvides, hvilket giver mulighed for at tilføje et ubegrænset antal klasser af genstande til modellen uden omskoling; udregn blot repræsentative nye elementindlejringer og føj dem til det eksisterende indeks.

Figur
Oversigt over TensorFlow-lighed (kilde)

 

TensorFlow Similarity letter træningen af ​​lighedsmodeller, såvel som den efterfølgende forespørgsel, intuitiv, især med introduktionen af ​​den nye Keras-model SimilarityModel(), som understøtter indlejring af indeksering og forespørgsel. Med TF Similarity er ende til ende modeltræning og forespørgsel ligetil.

For at demonstrere er her et eksempel på kode fra TF-ligheden GitHub Repo der kortfattet træner, indekserer og forespørger MNIST-datasættet.

fra tensorflow.keras importlag # Indlejring af outputlag med L2-norm fra tensorflow_similarity.layers import MetricEmbedding # Specialiseret metrisk tab fra tensorflow_similarity.losses import MultiSimilarityLoss # Underklasserede keras Model med understøttelse af indeksering fra tensorflow_similarity.models pull datasæt Similarity.models pull datas Similarity direkte fra tf-datasætkatalog fra tensorflow_similarity.samplers import TFDatasetMultiShotMemorySampler # Nærmeste nabo-visualizer fra tensorflow_similarity.visualization import viz_neigbors_imgs # Datasampler, der genererer balancerede batches fra MNIST_sampler = TFDatas datasettMultiS-datasætMultiS-datasætndata,' per_batch=10) # Byg en lighedsmodel ved at bruge standard Keras-lags inputs = layers.Input(shape=(28, 28, 1)) x = layers.Rescaling(1/255)(inputs) x = layers.Conv2D(64, 3, activation='relu')( x) x = layers.Flatten()(x) x = layers.Dense(64, activation='relu')(x) outputs = MetricEmbedding(64)(x) # Byg en specialiseret lighedsmodelmodel = SimilarityModel(inputs, outputs) # Træn Similarity-model ved hjælp af kontrastive tab model.compile('adam', loss=MultiSimilarityLoss()) model.fit(sampler, epoker=5) # Indeks 100 indlejrede MNIST-eksempler for at gøre dem søgbare sx, sy = sampler.get_slice (0,100) model.index(x=sx, y=sy, data=sx) # Find de 5 mest lignende indekserede MNIST-eksempler for et givet eksempel qx, qy = sampler.get_slice(3713, 1) nns = model.single_lookup (qx[0]) # Visualiser forespørgselseksemplet og dets top 5 naboer viz_neigbors_imgs(qx[0], qy[0], nns)


Hvis du finder dig selv på udkig efter ting, der ligner andre ting, kan TensorFlow Similarity muligvis hjælpe. Du kan finde mere på deres GitHub repoEller tjek Hej Verden eksempel for at komme rigtigt til det.

 
Relaterede:

Kilde: https://www.kdnuggets.com/2021/09/introducing-tensorflow-similarity.html

Tidsstempel:

Mere fra KDnuggets