Tuesday, August 23, 2022

TensorFlow Similarity

 Сходство - это метод машинного обучения, который использует подход ближайшего соседа для определения сходства двух или более объектов друг с другом на основе алгоритмических функций расстояния. Чтобы сходство работало со скоростью и масштабом стандартов машинного обучения, необходимы две критически важные возможности - высокоскоростное индексирование и метрические и неметрические функции расстояния.Сходство как метод, наряду с нейронными сетями и деревьями решений, позволяет прогнозировать будущие результаты. Однако только один метод может дать объяснение предсказания на локальном уровне предсказания. Другими словами, факторы, влияющие на один прогноз, отличаются от факторов, определяющих следующий прогноз, выявленный алгоритмом. Этот единственный метод - подобие.

================================================

TensorFlow Similarity — это библиотека TensorFlow для обучения по сходству, также известного как метрическое обучение и контрастное обучение.

С помощью TensorFlow Similarity вы можете обучать и обслуживать модели, которые находят похожие элементы (например, изображения) в большом наборе примеров. Метрическое обучение отличается от традиционной классификации, поскольку оно преследует другую цель. Модель учится сводить к минимуму расстояние между похожими примерами и максимизировать расстояние между разнородными примерами под наблюдением или самоконтролем. В любом случае TensorFlow Similarity предоставляет необходимые потери, метрики, семплеры, визуализаторы и подсистему индексации, чтобы сделать это быстро и легко

$ pip install --upgrade-strategy=only-if-needed tensorflow_similarity

Вот простой пример, демонстрирующий, как обучить модель подобия TensorFlow на данных MNIST. Этот пример иллюстрирует некоторые из основных компонентов, предоставляемых TensorFlow Similarity, и то, как они сочетаются друг с другом.

(.env) boris@boris-All-Series:~/Similarity$ cat similarityTF.py

from tensorflow_similarity.samplers import TFDatasetMultiShotMemorySampler

# Data sampler that generates balanced batches from MNIST dataset

sampler = TFDatasetMultiShotMemorySampler(dataset_name='mnist', classes_per_batch=10)

from tensorflow.keras import layers

from tensorflow_similarity.layers import MetricEmbedding

from tensorflow_similarity.models import SimilarityModel

# Build a Similarity model using standard Keras layers

inputs = layers.Input(shape=(28, 28, 1))

x = layers.experimental.preprocessing.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)

# Build a specialized Similarity model

model = SimilarityModel(inputs, outputs)

from tensorflow_similarity.losses import MultiSimilarityLoss

# Train Similarity model using contrastive loss

model.compile('adam', loss=MultiSimilarityLoss())

model.fit(sampler, epochs=5)

from tensorflow_similarity.visualization import viz_neigbors_imgs

# Index 100 embedded MNIST examples to make them searchable

sx, sy = sampler.get_slice(0,100)

model.index(x=sx, y=sy, data=sx)

# Find the top 5 most similar indexed MNIST examples for a given example

qx, qy = sampler.get_slice(3713, 1)

nns = model.single_lookup(qx[0])

# Visualize the query example and its top 5 neighbors

viz_neigbors_imgs(qx[0], qy[0], nns)




























































































No comments:

Post a Comment