Python Fré;张量流中chet起始距离参数的选择?

Python Fré;张量流中chet起始距离参数的选择?,python,tensorflow,Python,Tensorflow,如何在tensorflow中选择分类器_fn的值,我找不到任何示例: tf.contrib.gan.eval.frechet_classifier_distance( real_images, generated_images, classifier_fn, num_batches=1 )如果需要初始距离,则可

如何在tensorflow中选择分类器_fn的值,我找不到任何示例:

         tf.contrib.gan.eval.frechet_classifier_distance(
                     real_images,
                     generated_images,
                     classifier_fn,
                     num_batches=1

)

如果需要初始距离,则可以使用一个不太通用的函数,称为
tf.contrib.gan.eval.frechet\u初始距离
,该函数不需要
分类器fn
参数:

fid = tf.contrib.gan.eval.frechet_inception_distance(real_images, fake_images)
然而,当我尝试使用带有急切执行模式的
v1.14
使用此函数时,我得到了各种各样的错误。所以最终,我决定采用定制解决方案。也许这对你也有帮助

我遇到的以下实现似乎与原始文件中的描述相匹配:

将numpy导入为np
进口scipy.linalg
导入tensorflow作为tf
将tensorflow.keras导入为keras
从tensorflow.keras.applications.inception\u v3导入接收v3,预处理\u输入
从tensorflow.compat.v1导入ConfigProto
从skimage.transform导入调整大小
tf.enable_eager_execution()
config=ConfigProto()
config.gpu\u options.allow\u growth=True
tf.keras.backend.set_会话(tf.session(config=config))
def缩放_图像(图像、新_形状):
返回np.asarray([resize(image,new_shape,0)表示图像中的图像])
def计算fid(型号、图像1、图像2):
f1,f2=[模型预测(im)中的im(图像1,图像2)]
平均值1,sigma1=f1。平均值(轴=0),np.cov(f1,rowvar=False)
平均值2,sigma2=f2。平均值(轴=0),np.cov(f2,rowvar=False)
求和平方差=np.求和((平均值1-平均值2)**2)
cov_平均值=scipy.linalg.sqrtm(sigma1.dot(sigma2))
如果np.iscomplexobj(cov_平均值):
cov_mean=cov_mean.real
fid=总平方差+np.道(sigma1+sigma2-2.0*cov平均值)
返回fid
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
输入_形状=(299299,3)
inception=InceptionV3(包括顶部=False,池=avg,输入形状=input形状)
(dataset,u),u=keras.datasets.cifar10.load_data()
数据集=数据集[:100]
数据集=缩放图像(数据集,输入形状)
noise=预处理\输入(np.clip(255*np.random.uniform(size=dataset.shape),0255))
噪波=缩放图像(噪波、输入图形)
打印('FID:',计算\u FID(起始、数据集、噪声))
因此,我们将执行以下步骤:

  • 将图像重新缩放为
    InceptionV3
    所期望的形状

  • 使用
    inception_v3.preprocess_input
    转换图像

  • 通过
    接收v3
    网络传递两个张量(无顶层)

  • 将计算出的特征作为输入参数使用公式


  • 这是上述论文的摘录


    谢谢你的回答,我真的很感激。