Представляємо подібність TensorFlow

Вихідний вузол: 1079311

Представляємо подібність TensorFlow

Ключові слова: Google, Нейронні мережі, TensorFlow

TensorFlow Similarity – це нещодавно випущена бібліотека від Google, яка полегшує навчання, індексацію та запити моделей подібності. Дізнайтеся більше тут.


Часто нам потрібно вміти знаходити речі, схожі на інші речі. Пошук подібності є корисною технікою для цього. У науці даних, контрастного навчання можна використовувати для побудови моделей подібності, які потім можна використовувати для пошуку подібності.

Моделі схожості навчаються виводити вбудовування, в яких елементи вбудовуються в метричний простір, що призводить до ситуації, коли подібні елементи знаходяться близько один до одного і далі від різнорідних елементів. Це безпосередньо пов’язано — як інтуїтивно, так і математично — із вбудовуваннями слів, з якими ви вже знайомі; Париж і Лондон близькі один до одного, як і гірчиця і кетчуп, але ці дві групи порівняно далі один від одного.

Таким же чином ми могли б використовувати модель подібності для порівняння, скажімо, транспортних засобів. Наприклад, седани BMW і Mercedes будуть вбудовані близько один до одного, тоді як мотоцикли Yamaha і Kawasaki будуть тісно вбудовані. Мотоцикли будуть відносно далі від седанів, які, у свою чергу, будуть віддалені від інших різнорідних транспортних засобів, таких як човни, будинки на колесах, фургони, велосипеди тощо.

Рисунок
Огляд моделі подібності (джерело)

 

Глибоке навчання використовується для навчання нейронних мереж, які часто використовуються для цих моделей подібності. Щоб полегшити навчання таких моделей, Google зовсім недавно випустив Подібність TensorFlow.

Tensorflow Similarity пропонує найсучасніші алгоритми для метричного навчання та всі необхідні компоненти для дослідження, навчання, оцінки та обслуговування моделей на основі подібності.

Після навчання моделі створюється індекс вбудовування, щоб полегшити пошук. Для пошуку TF Similarity використовує швидкий приблизний пошук найближчого сусіда (ANN), щоб отримати найближчі збіги. Оскільки відстань між вбудованими елементами є функцією метрики відстані, пошук швидкий і точний за допомогою ANN.

Моделі подібності також є гнучкими та розширюваними, що дозволяє додавати до моделі необмежену кількість класів елементів без перенавчання; просто обчисліть репрезентативні вбудовування нових елементів і додайте їх до існуючого індексу.

Рисунок
Огляд подібності TensorFlow (джерело)

 

TensorFlow Similarity полегшує навчання моделей подібності, а також наступні запити, інтуїтивно зрозумілі, особливо з введенням нової моделі Keras SimilarityModel(), який підтримує вбудовування індексування та запити. Завдяки TF Similarity навчання моделі та запити є простими.

Щоб продемонструвати, ось приклад коду з подібності TF GitHub Repo який стисло навчає, індексує та запитує набір даних MNIST.

з шарів імпорту tensorflow.keras # Вбудовування вихідного шару з нормою L2 з tensorflow_similarity.layers import MetricEmbedding # Спеціалізовані втрати метрики з tensorflow_similarity.losses import MultiSimilarityLoss # Підкласована модель keras з підтримкою індексації з tensorflow_similarity.models імпорт даних набору даних, яка витягує Подібність даних безпосередньо з каталогу набору даних tf з tensorflow_similarity.sampler import TFDatasetMultiShotMemorySampler # Візуалізатор найближчого сусіда з tensorflow_similarity.visualization import viz_neigbors_imgs # Збірник даних, який генерує збалансовані пакети з MNIST набору даних MNIST datasetMultiShotMemorySampler використовуючи стандартні шари Keras inputs = layers.Input(shape=(10, 28, 28)) x = layers.Rescaling(1/1)(inputs) x = layers.Conv255D(2, 64, activation='relu')( x) x = шари.Flatten()(x) x = шари.Dense(3, activation='relu')(x) виходи = MetricEmbedding(64)(x) # B створити спеціалізовану модель схожості = SimilarityModel(входи, виходи) # Тренувати модель подібності за допомогою контрастного втрат model.compile('adam', loss=MultiSimilarityLoss()) model.fit(sampler, epochs=64) # Індекс 5 вбудованих прикладів MNIST щоб зробити їх доступними для пошуку sx, sy = sampler.get_slice(100) model.index(x=sx, y=sy, data=sx) # Знайдіть 0,100 найбільш схожих індексованих прикладів MNIST для даного прикладу qx, qy = sampler. get_slice(5, 3713) nns = model.single_lookup(qx[1]) # Візуалізуйте приклад запиту та його 0 провідних сусідів viz_neigbors_imgs(qx[5], qy[0], nns)


Якщо ви шукаєте речі, схожі на інші речі, TensorFlow Similarity може допомогти. Ви можете знайти більше у них GitHub репо, або перевірте Привіт світ приклад, щоб зрозуміти це.

 
споріднений:

Джерело: https://www.kdnuggets.com/2021/09/introducing-tensorflow-similarity.html

Часова мітка:

Більше від KDnuggets