gpt4 book ai didi

tensorflow - tensorflow中恢复的模型对relu操作给出了不同的结果

转载 作者:行者123 更新时间:2023-12-03 09:55:19 26 4
gpt4 key购买 nike

从恢复模型中检索到的权重不会改变,输入也是恒定的
但是 'Relu:0' 操作的输出每次都给出不同的结果。

下面是我的代码:

sess=tf.Session()   
saver = tf.train.import_meta_graph('checkpoints/checkpoints_otherapproach_1/cameranetwork_RAID_CNN-3100.meta')
saver.restore(sess,tf.train.latest_checkpoint(checkpoint_dir='checkpoints/checkpoints_otherapproach_1/'))

images = tf.get_default_graph().get_tensor_by_name('images:0')
phase = tf.get_default_graph().get_tensor_by_name('phase:0')
Activ = tf.get_default_graph().get_tensor_by_name('network/siamese_model/convolution_1/conv_1/Relu:0')

image_array = np.zeros(shape = [1,3,128,64,3]) #*******
imagepath = 'RAiD_Dataset' + '/images_afterremoving_persons_notinallcameras/'+'test'+'/camera_'+str(1)
fullfile_name = imagepath+"/"+ 'camera_1_person_23_index_1.jpg'
image_array[0][0] = cv2.imread(fullfile_name)
image_array[0][1] = image_array[0][0]
image_array[0][2] = image_array[0][0]
image_array = image_array.astype(np.float32)

feed_dict_values ={images: image_array, phase:False}
temp2 = sess.run(Activ, feed_dict =feed_dict_values)
temp1 = sess.run(Activ, feed_dict =feed_dict_values)

print (temp1==temp2).all() #output is false

最佳答案

这有两个可能的原因:

  • 一些 tensorflow 操作继承了 CUDA 的非确定性行为。这会导致小的数值误差(可能会被非线性放大)。见 this answer关于如何尝试在单个 CPU 线程上运行您的模型。如果在这种情况下两个数组结果是相同的,那么就是这种情况。
  • 我假设您知道正在加载的图形,但由于操作故意引入随机性或非恒定数据,图形本身可能会“按设计”产生不一致的结果。例如,考虑使用随机数生成器的操作或每次更新变量的操作(例如,tf.assign)Activ被评估。
  • 关于tensorflow - tensorflow中恢复的模型对relu操作给出了不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49685030/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com