Vi presenterar TensorFlow -likhet

Källnod: 1079311

Vi presenterar TensorFlow -likhet

TensorFlow Similarity är ett nyligen släppt bibliotek från Google som underlättar träning, indexering och sökning av likhetsmodeller. Kolla in mer här.


Ofta behöver vi kunna hitta saker som är som andra saker. Likhetssökning är en användbar teknik för att göra det. Inom datavetenskap, kontrastivt lärande kan användas för att bygga likhetsmodeller som sedan kan användas för likhetssökning.

Likhetsmodeller är tränade att mata ut inbäddningar där objekt är inbäddade i ett metriskt utrymme, vilket resulterar i en situation där liknande objekt är nära varandra och längre bort från olika objekt. Detta är direkt relaterat - både intuitivt och matematiskt - till ordinbäddningar, som du redan är bekant med; Paris och London ligger nära varandra, liksom senap och ketchup, men dessa två grupper är jämförelsevis längre ifrån varandra.

På samma sätt skulle vi kunna använda en likhetsmodell för att jämföra exempelvis fordon. Till exempel skulle BMW- och Mercedes-sedaner vara inbäddade nära varandra, medan Yamaha- och Kawasaki-motorcyklar skulle finna sig nära inbäddade. Motorcyklarna skulle vara relativt längre från sedanerna, som i sin tur skulle vara distanserade från andra olika fordon som båtar, husbilar, skåpbilar, cyklar etc.

Figur
Översikt över likhetsmodell (källa)

 

Djup inlärning används för att träna de neurala nätverken som ofta använder sig av dessa likhetsmodeller. För att underlätta utbildningen av sådana modeller har Google helt nyligen släppt TensorFlow likhet.

Tensorflow Similarity erbjuder toppmoderna algoritmer för metrisk inlärning och alla nödvändiga komponenter för att forska, träna, utvärdera och tjäna likhetsbaserade modeller.

Efter att en modell har tränats byggs ett inbäddningsindex upp för att underlätta sökningen. För sökning använder TF Similarity Fast Approximate Nearest Neighbor-sökning (ANN) för att hämta de närmaste matchningarna. Eftersom avståndet mellan inbäddade objekt är en funktion av ett avståndsmått, är uppslagningar både snabba och exakta med ANN.

Likhetsmodeller är också flexibla och utbyggbara, vilket gör att ett obegränsat antal klasser av föremål kan läggas till modellen utan omskolning; beräkna helt enkelt representativa nya objektinbäddningar och lägg till dem i det befintliga indexet.

Figur
TensorFlow Similarity översikt (källa)

 

TensorFlow Similarity underlättar träningen av likhetsmodeller, såväl som den efterföljande förfrågningen, intuitivt, speciellt med introduktionen av den nya Keras-modellen SimilarityModel(), som stöder inbäddning av indexering och sökning. Med TF Similarity är träning och förfrågning av modell helt enkelt.

För att demonstrera, här är exempelkod från TF-likheten GitHub Repo som kortfattat tränar, indexerar och frågar MNIST-datauppsättningen.

från tensorflow.keras importlager # Bädda in utdatalager med L2-norm från tensorflow_similarity.layers import MetricEmbedding # Specialiserad metrisk förlust från tensorflow_similarity.losses import MultiSimilarityLoss # Underklassade keras Modell med stöd för indexering från tensorflow_similarity.models pull import Similarity dataset thatModel data sampler direkt från tf datasetkatalog från tensorflow_similarity.samplers import TFDatasetMultiShotMemorySampler # Närmaste granne visualizer från tensorflow_similarity.visualization import viz_neigbors_imgs # Datasampler som genererar balanserade batcher från MNIST_ sampler = TFDatasetm använder standard Keras lager ingångar = lager.Input(form=(10, 28, 28)) x = lager.Omskalning(1/1)(ingångar) x = lager.Conv255D(2, 64, activation='relu')( x) x = lager. Flatten()(x) x = lager.Dense(3, activation='relu')(x) utgångar = MetricEmbedding(64)(x) # B skapa en specialiserad Similarity modell modell = SimilarityModel(ingångar, utgångar) # Träna Similarity modell med kontrastiv förlust model.compile('adam', loss=MultiSimilarityLoss()) model.fit(sampler, epochs=64) # Index 5 inbäddade MNIST exempel för att göra dem sökbara sx, sy = sampler.get_slice(100) model.index(x=sx, y=sy, data=sx) # Hitta de 0,100 mest liknande indexerade MNIST-exemplen för ett givet exempel qx, qy = sampler. get_slice(5, 3713) nns = model.single_lookup(qx[1]) # Visualisera frågeexemplet och dess topp 0 grannar viz_neigbors_imgs(qx[5], qy[0], nns)


Om du letar efter saker som är som andra saker kan TensorFlow Similarity kanske hjälpa dig. Du hittar mer hos dem GitHub repoEller kolla in Hej Världen exempel för att komma rätt till det.

 
Relaterad:

Källa: https://www.kdnuggets.com/2021/09/introducing-tensorflow-similarity.html

Tidsstämpel:

Mer från KDnuggets