TensorFlow Benzerliği ile Tanışın

Kaynak Düğüm: 1079311

TensorFlow Benzerliği ile Tanışın

TensorFlow Benzerlik, benzerlik modellerinin eğitimini, indekslenmesini ve sorgulanmasını kolaylaştıran, Google'ın yeni çıkardığı bir kitaplıktır. Daha fazlasına buradan göz atın.


Çoğu zaman başka şeylere benzeyen şeyleri bulmamız gerekir. Benzerlik arama bunu yapmak için kullanışlı bir tekniktir. Veri biliminde, karşılaştırmalı öğrenme daha sonra benzerlik araması için kullanılabilecek benzerlik modelleri oluşturmak için kullanılabilir.

Benzerlik modelleri öğelerin bir metrik uzaya yerleştirildiği yerleştirmelerin çıktısını almak üzere eğitilir; bu da benzer öğelerin birbirine yakın ve farklı öğelerden uzak olduğu bir durumla sonuçlanır. Bu, hem sezgisel hem de matematiksel olarak, zaten aşina olduğunuz sözcük yerleştirmelerle doğrudan ilgilidir; Paris ve Londra, hardal ve ketçap gibi birbirine yakındır, ancak bu iki grup birbirine nispeten daha uzaktır.

Aynı şekilde, örneğin araçları karşılaştırmak için bir benzerlik modeli kullanabiliriz. Örneğin, BMW ve Mercedes sedanları birbirine yakın gömülürken, Yamaha ve Kawasaki motosikletleri kendilerini yakın gömülü bulacak. Motosikletler sedanlardan nispeten daha uzakta olacak ve bu da tekneler, karavanlar, kamyonetler, bisikletler vb. gibi benzer olmayan diğer araçlardan uzaklaşacaktır.

şekil
Benzerlik modeline genel bakış (kaynak)

 

Derin öğrenme, sıklıkla bu benzerlik modelleri için kullanılan sinir ağlarını eğitmek için kullanılır. Bu tür modellerin eğitimini kolaylaştırmak için Google yakın zamanda şunları yayınladı: TensorFlow Benzerliği.

Tensorflow Benzerliği, metrik öğrenmeye yönelik en son teknolojiye sahip algoritmaları ve benzerlik tabanlı modelleri araştırmak, eğitmek, değerlendirmek ve sunmak için gerekli tüm bileşenleri sunar.

Bir model eğitildikten sonra aramayı kolaylaştırmak için bir yerleştirme dizini oluşturulur. Arama için TF Benzerlik, en yakın eşleşmeleri almak üzere Hızlı Yaklaşık En Yakın Komşu aramasını (ANN) kullanır. Gömülü öğeler arasındaki mesafe, mesafe ölçümünün bir fonksiyonu olduğundan, YSA kullanılarak yapılan aramalar hem hızlı hem de doğrudur.

Benzerlik modelleri aynı zamanda esnek ve genişletilebilir olup, yeniden eğitim gerektirmeden modele sınırsız sayıda öğe sınıfının eklenmesine olanak tanır; temsili yeni öğe yerleştirmelerini hesaplamanız ve bunları mevcut dizine eklemeniz yeterlidir.

şekil
TensorFlow Benzerliğe genel bakış (kaynak)

 

TensorFlow Benzerlik, benzerlik modellerinin eğitimini ve sonraki sorgulamaları kolaylaştırır, özellikle yeni Keras modelinin tanıtılmasıyla birlikte sezgiseldir. SimilarityModel(), indeksleme ve sorgulamayı yerleştirmeyi destekler. TF Benzerliği ile uçtan uca model eğitimi ve sorgulaması basittir.

Göstermek için burada TF benzerliğinden örnek kod verilmiştir. GitHub Deposu MNIST veri kümesini kısaca eğitir, indeksler ve sorgular.

tensorflow.keras içe aktarma katmanlarından # çıktı katmanını tensorflow_similarity.layers'dan L2 normuyla gömme MetricEmbedding # tensorflow_similarity.losses'tan özel metrik kaybı içe aktarma MultiSimilarityLoss # tensorflow_similarity.models'den indeksleme desteğine sahip alt sınıflı keras modeli import BenzerlikModel # Veri kümelerini çeken veri örnekleyici doğrudan tensorflow_similarity.samplers'den tf veri kümesi kataloğundan import TFDatasetMultiShotMemorySampler # tensorflow_similarity.visualization'dan en yakın komşu görselleştiricisi import viz_neigbors_imgs # MNIST veri kümesi örnekleyicisinden dengeli gruplar oluşturan veri örnekleyici = TFDatasetMultiShotMemorySampler(dataset_name='mnist', class_per_batch=10 ) # Bir Benzerlik modeli oluşturun standart Keras katmanları kullanılarak girişler = katmanlar.Input(shape=(28, 28, 1)) x = katmanlar.Rescaling(1/255)(girişler) x = katmanlar.Conv2D(64, 3, aktivasyon='relu')( x) x = katmanlar.Flatten()(x) x = katmanlar.Dense(64, aktivasyon='relu')(x) çıktılar = MetricEmbedding(64)(x) # Özel bir Benzerlik modeli oluşturun model = BenzerlikModel(girişler, çıktılar) # Karşılaştırmalı kayıp kullanarak Benzerlik modelini eğitin model.compile('adam', lost=MultiSimilarityLoss()) model.fit(sampler, epochs=5) # Arama yapılabilir hale getirmek için 100 yerleşik MNIST örneğini dizinleyin sx, sy = sampler.get_slice (0,100) model.index(x=sx, y=sy, data=sx) # Belirli bir örnek için en benzer indekslenmiş ilk 5 MNIST örneğini bulun qx, qy = sampler.get_slice(3713, 1) nns = model.single_lookup (qx[0]) # Sorgu örneğini ve onun ilk 5 komşusunu görselleştirin viz_neigbors_imgs(qx[0], qy[0], nns)


Kendinizi başka şeylere benzeyen şeyler ararken bulursanız TensorFlow Benzerlik size yardımcı olabilir. Daha fazlasını kendi sitelerinde bulabilirsiniz GitHub repoVeya çıkış Merhaba Dünya örnek, hemen ona ulaşmak için.

 
İlgili bağlantılar:

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

Zaman Damgası:

Den fazla KDNuggets