1

次のディープ ラーニング CNN アーキテクチャを使用しようとしています: DenseNet169 & EfficientNet with transfer learning。次のライブラリを PyCharm にインストールし、次のインポート ライブラリを呼び出します。

from keras.models import Model
from keras.layers import Dense, GlobalAveragePooling2D
from keras.preprocessing.image import ImageDataGenerator
from keras.optimizers import SGD, RMSprop
from keras.callbacks import ModelCheckpoint
from keras.callbacks import History

from keras import applications
import keras_applications
#Transfer Learning Networks Models

# 5 - DensNet family
import densenet
from keras.applications.densenet.DenseNet121 import DenseNet121
from keras.applications.densenet.DenseNet169 import DenseNet169
from keras.applications.densenet.DenseNet201 import DenseNet201
from keras_applications.densenet.DenseNet121 import DenseNet121
from keras_applications.densenet.DenseNet169 import DenseNet169
from keras_applications.densenet.DenseNet201 import DenseNet201
# 6 - EfficientNet Alone
import efficientnet.keras as efn
# 6 - EfficientNet family
from efficientnet import EfficientNetB0
from efficientnet import EfficientNetB1
from efficientnet import EfficientNetB2
from efficientnet import EfficientNetB3
from efficientnet import EfficientNetB4
from efficientnet import EfficientNetB5
from efficientnet import EfficientNetB6
from efficientnet import EfficientNetB7

そして、私は次のアーキテクチャを呼び出します。

事前トレーニング済みのモデルと重みのダウンロード

elif model_tl_name == 'DenseNet169':
    print("base_model = DenseNet169")
    base_model = densenet.DenseNetImageNet169(include_top=True, input_shape=(224, 224, 3), input_tensor=None, pooling=None, classes=1000)
    #base_model = DenseNet169(include_top=True, weights='imagenet', input_tensor=None, input_shape=None, pooling=None, classes=1000)
elif model_tl_name == 'EfficientNetB5':
    print("base_model = EfficientNetB5")
    #base_model = EfficientNetB5(include_top=False, weights='imagenet')
    base_model = efn.EfficientNetB5(include_top=False, weights='imagenet')
    # model = EfficientNetB3(weights='imagenet', include_top=False, input_shape=(img_size, img_size, 3))
# Changing last layer to adapt to two classes
model = add_new_last_layer(base_model, nb_classes)

しかし、私は常に次のエラーメッセージを受け取ります:

DenseNet169 の場合: mask = node.output_masks[tensor_index] AttributeError: 'Node' オブジェクトに属性 'output_masks' がありません

keras.applications からの EfficientNetB5 のインポート EfficientNetB5 ファイル "C:\Users\QTR7701\AppData\Local\Programs\Python\Python37\lib\site-packages\effectivenet\initializers.py"、44 行目、呼び出しで return tf.random_normal( AttributeError: モジュール 'tensorflow' には属性 'random_normal' がありません

誰かが私を助けることができれば。

4

1 に答える 1

0

設定 - >プロジェクトインタープリターに移動し、 libPyPharmをロードしてみてください。tensorflowその後、試してください->

from tensorflow.keras.applications.efficientnet import EfficientNetB0, EfficientNetB5
mm = EfficientNetB0(include_top=True, weights=None, input_tensor=None, input_shape=None, pooling=None, classes=2, classifier_activation="softmax")
mm.summary()
于 2021-01-07T09:46:45.553 に答える