【Tensorflow 实战】实现欧式距离

场景:通过一组图片和一些模板图片进行匹配,得到每一个图片距离最小的模板

假设数据是[1,1]和[1,2], 模板是[2,3]和[2,4]

# -*- coding:utf-8 -*-
import tensorflow as tf

x1 = tf.constant([[1,1],[1,1],[1,2],[1,2]], tf.float32)
x2 = tf.constant([[2,3],[2,4],[2,3],[2,4]], tf.float32)

ones = tf.ones([2,1], dtype=tf.float32)

#计算两矩阵对应点相减后的平方
dis = tf.square(x1-x2)
#将矩阵的行向量求和,得到一维列向量
dis_add = tf.matmul(dis, ones)
#将一维向量按模板数切成多维向量
da_reshape = tf.reshape(dis_add, [-1,2])
#得到列向量中最小的结果
result = tf.argmin(da_reshape, axis=1)

with tf.Session() as sess:
    o = sess.run(ones)
    r = sess.run(dis)
    da = sess.run(dis_add)
    da_r = sess.run(da_reshape)
    res = sess.run(result)
    print o,r, da, da_r, res

结果

[[ 1.]
 [ 1.]] [[ 1.  4.]
 [ 1.  9.]
 [ 1.  1.]
 [ 1.  4.]] [[  5.]
 [ 10.]
 [  2.]
 [  5.]] [[  5.  10.]
 [  2.   5.]] [0 0]            #[0,0]是结果


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值