【问题标题】:How to retrieve intermediate predictions results in a loop如何在循环中检索中间预测结果
【发布时间】:2020-02-07 10:49:32
【问题描述】:

需要计算每一层的预测结果的时间,并将模型的输出作为输入传递给另一层。将每一层视为模型并获取中间结果并将这些结果传递给下一层。当我尝试运行代码断言错误时引发。

   model = vgg16.VGG16(weights='imagenet')
   filename = 'I:/PhD/SecondYear/Experiment/DNN/image/cat.4001.jpg'
   original_image = load_img(filename, target_size=(224, 224))
   numpy_image = img_to_array(original_image)
   input_image = np.expand_dims(numpy_image, axis=0)

   processed_image_vgg16 = vgg16.preprocess_input(input_image.copy())
   new_input=keras.layers.Input(shape=(224, 224, 3))
   input=new_input

   def profiling(model, test_input):
   next_layer = input
   for layer in model.layers:       
     out= layer(next_layer)
     #next_layer = out
     intermediate_model= keras.Model(next_layer,out)
     start = time.time()
     x = intermediate_model.predict(test_input)
     next_layer = out
     end = time.time() - start
     print(end)

profiling(model,processed_image_vgg16)

【问题讨论】:

  • 你能提出问题吗?
  • 感谢@NeptuneZ,我已添加问题。如果还不清楚问我

标签: python-3.x keras keras-layer tf.keras keras-2


【解决方案1】:

我对你的功能做了些微改动:

def profiling(model, test_input):
  data_input = test_input
  for layer in model.layers: 

    start = time.time()
    im_input = tf.keras.layers.Input(shape=layer.input.shape[1:])
    # Get current layer's input shape and create input tensor.
    im_output = layer(im_input)
    # Apply current layer's operation on current input.
    intermediate_model= keras.models.Model(im_input,im_output) 
    # Create model from input and output 
    data_input = intermediate_model.predict(data_input)
    # predict and update output to data_input variable which will be used in next iteration. 
    end = time.time() - start
    print("Layer: ",type(layer).__name__,end)

profiling(model,processed_image_vgg16)

# output:
# Layer:  InputLayer 0.026311635971069336
# Layer:  Conv2D 0.048013925552368164
# Layer:  Conv2D 0.11106109619140625
# Layer:  MaxPooling2D 0.03328657150268555
# ...

这将为您提供逐层子模型的预测时间。

【讨论】:

    猜你喜欢
    • 2023-01-15
    • 1970-01-01
    • 2020-09-29
    • 2021-10-13
    • 2019-06-11
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多