属性错误:图层"input_4"具有多个具有不同输出形状的入站节点



我得到以下错误。AttributeError:层"input_4"有多个入站节点,具有不同的输出形状。因此,输出形状的概念在层中定义不清"改为get_output_shape_at(node_index("。

该代码在不运行Docker容器的情况下运行得非常好。我有两个两个docker容器上的docker容器我有相同版本的TensorFlow版本2.1.0和Keras 2.2.4-tf。然而,在以前的系统上,我运行windows机器上的代码TensorFlow版本1.12.0和2.1.6-tf谢谢,非常感谢您的帮助我正在使用这个1教程在docker容器中运行TensorFlow。Docker文件的代码已给出在下面

Docker文件

FROM tensorflow/tensorflow:latest-py3
RUN pip install -q keras
RUN pip install prettytable
RUN pip install pillow

Python代码

import numpy as np
from keras.applications.vgg19 import decode_predictions
from tensorflow.python.keras.models import load_model
from prettytable import PrettyTable
import time
from keras import backend as K
from tensorflow import keras
from tensorflow.python import keras
import time
model_2=load_model('model_2.h5',compile=False)
model_2.summary()
predictions1= np.load('predictions_result.npy')
times=[]
def profiler(model):
layer_input = keras.layers.Input(batch_shape=model.get_layer('input_4').get_input_shape_at(0))
x = layer_input
t = PrettyTable( ['Layer', 'Latency (milliseconds)', 'Output (bytes)'] )
for layer in model.layers:
x = layer( x )
# input and output of layer
result = 1
output_shape_list = []
for i in layer.output_shape[1:]:
result = result * i
output_shape_list.append( i )
intermediate_model = keras.Model( layer_input, x )
start = time.time()
intermediate_model = intermediate_model.predict(predictions1)
np.save('predictions_result', intermediate_model)
end = time.time() - start
print(end)
times.append(end)
def convert_bytes(result):
for x in ['bytes', 'KB', 'MB', 'GB', 'TB']:
if result < 1024.0:
return "%3.1f %s" % (result, x)
result /= 1024.0
return result
t.add_row([type( layer ).__name__, round( end*1000, 2 ),  convert_bytes( result*4 )])
print(t)
profiler(model_2)
print("Total Latency(milliseconds):", round(sum(times*1000),2))
tmp=np.zeros((1,28,28,512))
for i in range(0,1):
tmp[i,:,:,:]=predictions1[i,:]
predictions2 = model_2.predict(tmp)
label_vgg19 = decode_predictions(predictions2)
print ('label_vgg19 =', label_vgg19)

问题出现在下一行中

`for i in layer.output_shape[1:]:'

修复

shape=layer.get_output_at( 0 ).get_shape().as_list()
for i in shape[1:]:
result = result * i 

最新更新