ValueError:图在Keras2中断开连接

问题描述

我收到此错误,但不确定为什么。

下面是我的代码。我该如何解决

def f_stocks_embed_module(cat_input_embed_dim,batch_size):

    '''

     Returning a Model that can be used as a Layer within the broader Keras Model.

    '''
    
    
    X = Input(shape = (1,),batch_size = batch_size)
    
    cat_input = Input(shape = (1,batch_size = batch_size)
    
    cat_input_add = Embedding(input_dim = cat_input_embed_dim,output_dim = 1)(cat_input)
    
    cat_input_mult = Embedding(input_dim = cat_input_embed_dim,output_dim = 1)(cat_input)
    
    cat_input_add = Flatten()(cat_input_add)
    
    cat_input_mult = Flatten()(cat_input_mult)
    
    x = Multiply()([X,cat_input_mult])
    
    x = Add()([x,cat_input_add])
    
    x = Dense(1)(x)
    
    x = Add()([X,x])
    
    model = Model(inputs = [X,cat_input],outputs = x)
    
    return(model)

color_embed_dim = 7
clarity_embed_dim = 8
batch_size = 20

dense1 = 2**7
dense2 = 2**8
dense3 = 2**9
dropout = 0.8
price_loss = 1
cut_loss = 1
activation= LeakyReLU()
batch_size = 20
threshold = 0.7
#====================================================================

# INPUTS

#====================================================================


#----------------------------------------------------------------

carat = Input(
    shape= (1,batch_size= batch_size,name= 'carat'
)

#----------------------------------------------------------------

Color = Input(
    shape= (1,name= 'color'
)

#----------------------------------------------------------------

Clarity = Input(
    shape= (1,name= 'clarity'
)

#----------------------------------------------------------------

depth = Input(
    shape= (1,name= 'depth'
)

#----------------------------------------------------------------

table = Input(
    shape= (1,name= 'table'
)

#----------------------------------------------------------------

X = Input(
    shape= (1,name= 'x'
)

#----------------------------------------------------------------

y = Input(
    shape= (1,name= 'y'
)

#----------------------------------------------------------------

z = Input(
    shape= (1,name= 'z'
)

#----------------------------------------------------------------

#====================================================================

# CONCATENATE FEATURES

#====================================================================


Y = Concatenate()([carat,depth,table,X,y,z])



#====================================================================

# DENSE NETWORK FOR BOTH PRICE AND CUT

#====================================================================

Y = Dense(dense1,activation = activation)(Y)

Y = Batchnormalization()(Y)

Y = Dense(dense2,activation = activation)(Y)

Y = Batchnormalization()(Y)


#====================================================================

# DENSE NETWORK TO PREDICT CUT

#====================================================================

x = Dense(dense3,activation = activation)(Y)

x = Batchnormalization()(x)

x = Dropout(dropout)(x)

#====================================================================

# PREDICTING CUT USING THE EMbedDINGS AND SKIP CONNECTIONS

# ====================================================================

x = Dense(1)(x)





#-------------------------------------------------------------

# THE EFFECT OF COLOR ON CUT

#-------------------------------------------------------------

model_embed_color_cut =  f_stocks_embed_module(color_embed_dim,batch_size)

model_embed_clarity_cut =  f_stocks_embed_module(clarity_embed_dim,batch_size)


x = model_embed_color_cut([x,Color])

# At this point the problem appears.  Although my code is longer,for simplicity I cut it here and create a Model.

model = Model([carat,z],x)

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-182-acd9c88f235b> in <module>
    149 
    150 
--> 151 model = Model([carat,x)

~\AppData\Roaming\Python\python37\site-packages\tensorflow\python\keras\engine\training.py in __new__(cls,*args,**kwargs)
    240       # Functional model
    241       from tensorflow.python.keras.engine import functional  # pylint: disable=g-import-not-at-top
--> 242       return functional.Functional(*args,**kwargs)
    243     else:
    244       return super(Model,cls).__new__(cls,**kwargs)

~\AppData\Roaming\Python\python37\site-packages\tensorflow\python\training\tracking\base.py in _method_wrapper(self,**kwargs)
    455     self._self_setattr_tracking = False  # pylint: disable=protected-access
    456     try:
--> 457       result = method(self,**kwargs)
    458     finally:
    459       self._self_setattr_tracking = prevIoUs_value  # pylint: disable=protected-access

~\AppData\Roaming\Python\python37\site-packages\tensorflow\python\keras\engine\functional.py in __init__(self,inputs,outputs,name,trainable)
    113     #     'arguments during initialization. Got an unexpected argument:')
    114     super(Functional,self).__init__(name=name,trainable=trainable)
--> 115     self._init_graph_network(inputs,outputs)
    116 
    117   @trackable.no_automatic_dependency_tracking

~\AppData\Roaming\Python\python37\site-packages\tensorflow\python\training\tracking\base.py in _method_wrapper(self,**kwargs)
    458     finally:
    459       self._self_setattr_tracking = prevIoUs_value  # pylint: disable=protected-access

~\AppData\Roaming\Python\python37\site-packages\tensorflow\python\keras\engine\functional.py in _init_graph_network(self,outputs)
    189     # Keep track of the network's nodes and layers.
    190     nodes,nodes_by_depth,layers,_ = _map_graph_network(
--> 191         self.inputs,self.outputs)
    192     self._network_nodes = nodes
    193     self._nodes_by_depth = nodes_by_depth

~\AppData\Roaming\Python\python37\site-packages\tensorflow\python\keras\engine\functional.py in _map_graph_network(inputs,outputs)
    929                              'The following prevIoUs layers '
    930                              'were accessed without issue: ' +
--> 931                              str(layers_with_complete_input))
    932         for x in nest.flatten(node.outputs):
    933           computable_tensors.add(id(x))

ValueError: Graph disconnected: cannot obtain value for tensor Tensor("color_9:0",shape=(20,1),dtype=float32) at layer "functional_29". The following prevIoUs layers were accessed without issue: ['concatenate_9','dense_34','batch_normalization_16','dense_35','batch_normalization_17','dense_36','batch_normalization_18','dropout_6','dense_37']

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)