Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 属性错误:';元组';对象没有属性';层';在尝试使用keras进行迁移学习时_Python_Tensorflow_Keras_Transfer Learning - Fatal编程技术网

Python 属性错误:';元组';对象没有属性';层';在尝试使用keras进行迁移学习时

Python 属性错误:';元组';对象没有属性';层';在尝试使用keras进行迁移学习时,python,tensorflow,keras,transfer-learning,Python,Tensorflow,Keras,Transfer Learning,我想用keras模型进行迁移学习, 但在向模型添加新层时遇到了困难。 我尝试了以下代码: prev_model = load_model('final_model.h5') # loading the previously saved model. new_model = Sequential() new_model.add(prev_model) new_model.add(Dense(256,activation='relu')) new_model.add(Dropout(0.5)) n

我想用keras模型进行迁移学习, 但在向模型添加新层时遇到了困难。 我尝试了以下代码:

prev_model = load_model('final_model.h5') # loading the previously saved model.

new_model = Sequential()
new_model.add(prev_model)
new_model.add(Dense(256,activation='relu'))
new_model.add(Dropout(0.5))
new_model.add(Dense(1,activation='sigmoid'))
但是得到:

TypeError: The added layer must be an instance of class Layer. Found: <tensorflow.python.keras.layers.core.Flatten object at 0x00000000B74364A8>
在其他岗位。 但这会导致

 AttributeError: 'tuple' object has no attribute 'layer'
我目前正在使用

keras 2.2.5 
tensorflow-gpu 1.14.0
它是由版本冲突引起的吗


完全回溯:(AttributeError:“tuple”对象没有属性“layer”)

AttributeError回溯(最近一次调用)
在里面
4#vgg_模型.层[i].可训练=假
5 vgg_输出=转换基本输出[0]
---->6输出=tensorflow.keras.layers.Dropout(Dropout_rate,name=“Dropout_out”)(vgg_输出)
7.
8 model1=models.Model(输入=conv_base.inputs,输出=输出)
G:\ProgramData\Anaconda3\envs\tensorf\lib\site packages\tensorflow\python\keras\engine\base\u layer.py in\uuuuuuuuu调用(self,input,*args,**kwargs)
661 kwargs.pop(“培训”)
662输入,输出=自。\设置\连接\元数据_(
-->663输入、输出、args、kwargs)
664自我处理活动规则化(输入、输出)
665自设置掩码元数据(输入、输出、上一个掩码)
G:\ProgramData\Anaconda3\envs\tensorf\lib\site packages\tensorflow\python\keras\engine\base\u layer.py in\u set\u connectivity\u metadata\u(self、输入、输出、args、kwargs)
1706 kwargs.pop('mask',None)#'mask'不应序列化。
1707自我添加入站节点(
->1708输入张量=输入,输出张量=输出,参数=kwargs)
1709返回输入、输出
1710
G:\ProgramData\Anaconda3\envs\tensorf\lib\site packages\tensorflow\python\keras\engine\base\u layer.py in\u add\u inbound\u节点(self、输入张量、输出张量、参数)
1793     """
1794 inbound_layers=nest.map_结构(lambda t:t._keras_history.layer,
->1795输入(U张量)
1796 node_index=nest.map_结构(lambda t:t._keras_history.node_index,
1797输入(U张量)
G:\ProgramData\Anaconda3\envs\tensorf\lib\site packages\tensorflow\python\util\nest.py在map\u结构中(func,*structure,**kwargs)
513
514返回包\u序列\u组件(
-->515结构[0],[func(*x)表示条目中的x],
516 expand_composites=expand_composites)
517
G:\ProgramData\Anaconda3\envs\tensorf\lib\site packages\tensorflow\python\util\nest.py in(.0)
513
514返回包\u序列\u组件(
-->515结构[0],[func(*x)表示条目中的x],
516 expand_composites=expand_composites)
517
G:\ProgramData\Anaconda3\envs\tensorf\lib\site packages\tensorflow\python\keras\engine\base\u layer.py in(t)
1792创建节点的调用处的层的“call”方法。
1793     """
->1794 inbound_layers=nest.map_结构(lambda t:t._keras_history.layer,
1795输入(U张量)
1796 node_index=nest.map_结构(lambda t:t._keras_history.node_index,
AttributeError:“元组”对象没有属性“层”
fulltraceback:(TypeError:添加的层必须是类层的实例。)

TypeError回溯(最近一次调用)
在里面
2#模型。添加(上一个模型)
---->3 model.add(tensorflow.keras.layers.globalMapooling2D(name=“gap”))
4模型。添加(展平(name=“展平”))
5如果辍学率>0:
6模型。添加(层。辍学(辍学率,name=“辍学”))
G:\ProgramData\Anaconda3\envs\tensorf\lib\site packages\keras\engine\sequential.py in add(self,layer)
131 raise TypeError('添加的图层必须为'
132“类层的实例”
-->133'找到:'+str(层))
134自建=错误
135如果不是自身层:
TypeError:添加的层必须是类层的实例。找到:
在从tensorflow.keras.layers添加图层时,您已经使用keras.models.model创建了模型。

请注意keras和tensorflow.keras是不同的。请确保您坚持使用其中一种方法。

请在此发布完整的trackback。回溯还将指示源代码的行号。您是否可以在发布的代码中标记行以显示错误抛出的位置?对于
属性错误,我假设
vgg_输出与您想象的不一样。您应该打印它以确保。对于
类层
错误,我记得Keras不喜欢嵌套模型(将
prev_模型
添加到您的
顺序
模型中)。也许您可以对此进行调查。。。
keras 2.2.5 
tensorflow-gpu 1.14.0
    AttributeError                            Traceback (most recent call last)
<ipython-input-15-afcad6e65f32> in <module>
      4 #     vgg_model.layers[i].trainable = False
      5 vgg_output = conv_base.outputs[0]
----> 6 output = tensorflow.keras.layers.Dropout(dropout_rate, name="dropout_out")(vgg_output)
      7 
      8 model1 = models.Model(inputs=conv_base.inputs, outputs=output)

G:\ProgramData\Anaconda3\envs\tensorf\lib\site-packages\tensorflow\python\keras\engine\base_layer.py in __call__(self, inputs, *args, **kwargs)
    661               kwargs.pop('training')
    662             inputs, outputs = self._set_connectivity_metadata_(
--> 663                 inputs, outputs, args, kwargs)
    664           self._handle_activity_regularization(inputs, outputs)
    665           self._set_mask_metadata(inputs, outputs, previous_mask)

G:\ProgramData\Anaconda3\envs\tensorf\lib\site-packages\tensorflow\python\keras\engine\base_layer.py in _set_connectivity_metadata_(self, inputs, outputs, args, kwargs)
   1706     kwargs.pop('mask', None)  # `mask` should not be serialized.
   1707     self._add_inbound_node(
-> 1708         input_tensors=inputs, output_tensors=outputs, arguments=kwargs)
   1709     return inputs, outputs
   1710 

G:\ProgramData\Anaconda3\envs\tensorf\lib\site-packages\tensorflow\python\keras\engine\base_layer.py in _add_inbound_node(self, input_tensors, output_tensors, arguments)
   1793     """
   1794     inbound_layers = nest.map_structure(lambda t: t._keras_history.layer,
-> 1795                                         input_tensors)
   1796     node_indices = nest.map_structure(lambda t: t._keras_history.node_index,
   1797                                       input_tensors)

G:\ProgramData\Anaconda3\envs\tensorf\lib\site-packages\tensorflow\python\util\nest.py in map_structure(func, *structure, **kwargs)
    513 
    514   return pack_sequence_as(
--> 515       structure[0], [func(*x) for x in entries],
    516       expand_composites=expand_composites)
    517 

G:\ProgramData\Anaconda3\envs\tensorf\lib\site-packages\tensorflow\python\util\nest.py in <listcomp>(.0)
    513 
    514   return pack_sequence_as(
--> 515       structure[0], [func(*x) for x in entries],
    516       expand_composites=expand_composites)
    517 

G:\ProgramData\Anaconda3\envs\tensorf\lib\site-packages\tensorflow\python\keras\engine\base_layer.py in <lambda>(t)
   1792             `call` method of the layer at the call that created the node.
   1793     """
-> 1794     inbound_layers = nest.map_structure(lambda t: t._keras_history.layer,
   1795                                         input_tensors)
   1796     node_indices = nest.map_structure(lambda t: t._keras_history.node_index,

AttributeError: 'tuple' object has no attribute 'layer'
TypeError                                 Traceback (most recent call last)
<ipython-input-42-b5858637ba91> in <module>
      2 # model.add(prev_model)
----> 3 model.add(tensorflow.keras.layers.GlobalMaxPooling2D(name="gap"))
      4 model.add(Flatten(name="flatten"))
      5 if dropout_rate > 0:
      6     model.add(layers.Dropout(dropout_rate, name="dropout_out"))

G:\ProgramData\Anaconda3\envs\tensorf\lib\site-packages\keras\engine\sequential.py in add(self, layer)
    131             raise TypeError('The added layer must be '
    132                             'an instance of class Layer. '
--> 133                             'Found: ' + str(layer))
    134         self.built = False
    135         if not self._layers:

TypeError: The added layer must be an instance of class Layer. Found: <tensorflow.python.keras.layers.core.Flatten object at 0x00000000B74364A8>
TypeError: The added layer must be an instance of class Layer