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