Python 无法在Tensorflow 2.0中使用VGFace keras

Python 无法在Tensorflow 2.0中使用VGFace keras,python,keras,deep-learning,tensorflow2.0,Python,Keras,Deep Learning,Tensorflow2.0,我正在尝试使用keras VGFace图书馆来训练CNN。我已经安装了tensorflow 2.0.0-rc1、keras 2.3.1、cuda 10.1、cudnn 7.6.5,驱动程序版本是418,问题是当我尝试使用VGFace模型作为卷积基时,我得到了一个错误,下面是代码和错误 from keras_vggface.vggface import VGGFace conv_base = VGGFace(model='vgg16', include_top=False) model = m

我正在尝试使用keras VGFace图书馆来训练CNN。我已经安装了tensorflow 2.0.0-rc1、keras 2.3.1、cuda 10.1、cudnn 7.6.5,驱动程序版本是418,问题是当我尝试使用VGFace模型作为卷积基时,我得到了一个错误,下面是代码和错误

from keras_vggface.vggface import VGGFace 
conv_base = VGGFace(model='vgg16', include_top=False)

model = models.Sequential()
model.add(conv_base)
model.add(layers.Flatten())
model.add(layers.Dense(1024, activation='relu'))
model.add(layers.Dense(800, activation='softmax'))
错误

TypeError Traceback (most recent call last)
    <ipython-input-4-f6b5cad8f44b> in <module>
          1 #arquitectura
          2 model = models.Sequential()
    ----> 3 model.add(conv_base)
          4 model.add(layers.Flatten())
          5 model.add(layers.Dense(1024, activation='relu'))

~/anaconda3/envs/vggface/lib/python3.7/site-packages/tensorflow_core/python/training/tracking/base.py in _method_wrapper(self, *args, **kwargs)
        455     self._self_setattr_tracking = False  # pylint: disable=protected-access
        456     try:
    --> 457       result = method(self, *args, **kwargs)
        458     finally:
        459       self._self_setattr_tracking = previous_value  # pylint: disable=protected-access

~/anaconda3/envs/vggface/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/sequential.py in add(self, layer)
        156       raise TypeError('The added layer must be '
        157                       'an instance of class Layer. '
    --> 158                       'Found: ' + str(layer))
        159 
        160     tf_utils.assert_no_legacy_layers([layer])

TypeError: The added layer must be an instance of class Layer. Found: <keras.engine.training.Model object at 0x7f0bf03db210>
TypeError回溯(最近一次调用)
在里面
1#阿奎特拉
2 model=models.Sequential()
---->3型号。添加(conv_底座)
4.model.add(layers.flatte())
5.model.add(layers.Dense(1024,activation='relu'))
~/anaconda3/envs/vggface/lib/python3.7/site-packages/tensorflow\u core/python/training/tracking/base.py in\u method\u wrapper(self,*args,**kwargs)
455 self._self_setattr_tracking=False#pylint:disable=protected access
456试试:
-->457结果=方法(自身、*args、**kwargs)
458最后:
459 self._self_setattr_tracking=上一个值#pylint:disable=受保护访问
添加中的~/anaconda3/envs/vggface/lib/python3.7/site-packages/tensorflow\u core/python/keras/engine/sequential.py(self,layer)
156 raise TypeError('添加的图层必须为'
157“类层的实例”
-->158'找到:'+str(层))
159
160 tf_utils.assert_no_legacy_层([层])
TypeError:添加的层必须是类层的实例。发现:

感谢阅读,我希望您能告诉我为什么会出现此错误以及如何解决此错误。

问题在于
keras
tf.keras
之间的不兼容。您正在使用的库(vggface keras)使用
keras
,而您的代码使用
tf.keras
。这行不通


唯一可能的解决方案是对整个管道使用
keras
,或者修改
vggface keras
库以使用
tf.keras
,包括修改所有导入和修复出现的任何错误。

问题是
keras
tf.keras
之间不兼容。您正在使用的库(vggface keras)使用
keras
,而您的代码使用
tf.keras
。这行不通


唯一可能的解决方案是在整个管道中使用
keras
,或者修改
vggface keras
库以使用
tf.keras
,包括修改所有导入和修复出现的任何错误。

这里有一个页面,您可以下载带有vggface模型权重的.h5文件,因此,我们可以使用它在tensorflow中进行训练,其版本高于1.15


这是一个页面,您可以在其中下载带有VGFace模型权重的.h5文件,因此我们可以使用它在tensorflow中进行训练,其版本高于1.15


VGG Face被包装在python的deepface框架中。只需将VGG面字符串传递给模型名变量

#!pip install deepface
from deepface import DeepFace
obj = DeepFace.verify([
      ["img1.jpg", "img2.jpg"],
      ["img1.jpg", "img3.jpg"],
      ["img1.jpg", "img4.jpg"],
   ]
   , model_name = "VGG-Face")
print(obj)

此块将检查img2、img3、img4之间的img1。

VGG面被包装在python的deepface框架中。只需将VGG面字符串传递给模型名变量

#!pip install deepface
from deepface import DeepFace
obj = DeepFace.verify([
      ["img1.jpg", "img2.jpg"],
      ["img1.jpg", "img3.jpg"],
      ["img1.jpg", "img4.jpg"],
   ]
   , model_name = "VGG-Face")
print(obj)

此区块将在img2、img3、img4之间检查img1。

感谢awnser我正在做这些事情并正在努力,如果我发现我无法处理的事情,我将在那里编辑,否则我将在那里分享我的东西感谢现在感谢awnser我正在做这些事情并正在努力,如果我发现我无法处理的事情,我将在那里编辑,否则我会分享我的东西谢谢你抱歉,但这能训练神经网络吗?我可以使用除最后3层之外的所有层吗,比如w/tensorflow和keras?这将在背景中构建一个tensorflow/keras模型。你不需要再培训,但是如果你愿意的话,你仍然可以再培训。谢谢你的回复,这里的内容是我有2万个不同的人,其中大约有300张照片,我试图在ip cam流中对他们进行分类,我不知道是否制作deepface.verify将是wright Approach,你认为呢?大规模的人脸识别是用deepface中的查找功能来处理的。它会在数据库中查找一次人脸的矢量表示-(20k人x 300张图片)。然后,应用面部识别将在几秒钟内完成。《阅读我的回购协议》的文件对此进行了深刻的解释。对不起,这对神经网络的再训练有效吗?我可以使用除最后3层之外的所有层吗,比如w/tensorflow和keras?这将在背景中构建一个tensorflow/keras模型。你不需要再培训,但是如果你愿意的话,你仍然可以再培训。谢谢你的回复,这里的内容是我有2万个不同的人,其中大约有300张照片,我试图在ip cam流中对他们进行分类,我不知道是否制作deepface.verify将是wright Approach,你认为呢?大规模的人脸识别是用deepface中的查找功能来处理的。它会在数据库中查找一次人脸的矢量表示-(20k人x 300张图片)。然后,应用面部识别将在几秒钟内完成。请阅读回购协议的文档,并对其进行深入解释。