一周前,在安装了以下库后,我的Google Colaboratory笔记本运行正常:
!pip install te!pip install tensorflow==2.1!pip install keras==2.3.1!pip install -U segmentation-models!pip install -U --pre segmentation-models
以及
import tensorflow as tfimport segmentation_models as smimport globimport cv2import numpy as npfrom matplotlib import pyplot as pltimport keras from keras import normalizefrom keras.metrics import MeanIoU
它工作正常:
# 为dice_loss设置类权重(车:1.;行人:2.;背景:0.5;)dice_loss = sm.losses.DiceLoss(class_weights=np.array([0.25, 0.25, 0.25, 0.25])) focal_loss = sm.losses.CategoricalFocalLoss()total_loss = dice_loss + (1 * focal_loss)metrics = [sm.metrics.IOUScore(threshold=0.5), sm.metrics.FScore(threshold=0.5)]BACKBONE1 = 'resnet34'preprocess_input1 = sm.get_preprocessing(BACKBONE1)# 预处理输入X_train1 = preprocess_input1(X_train)X_test1 = preprocess_input1(X_test)# 定义模型model1 = sm.Unet(BACKBONE1, encoder_weights='imagenet', classes=n_classes, activation=activation)
之后,由于一个错误,我进行了更改:
!pip install -q tensorflow==2.1!pip install -q keras==2.3.1!pip install -q tensorflow-estimator==2.1import osos.environ['CUDA_VISIBLE_DEVICES'] = '0'os.environ["SM_FRAMEWORK"] = "tf.keras"from tensorflow import kerasfrom tensorflow.keras.utils import normalizefrom tensorflow.keras.metrics import MeanIoU
在那之后,这部分不再工作:
# 定义模型 model1 = sm.Unet(BACKBONE1, encoder_weights='imagenet', classes=n_classes, activation=activation)
错误:
/usr/local/lib/python3.7/dist-packages/tensorflow_core/python/keras/saving/hdf5_format.pyin load_weights_from_hdf5_group(f, layers)649 “””650 if ‘keras_version’ in f.attrs:–> 651 original_keras_version = f.attrs[‘keras_version’].decode(‘utf8’)652 else:653 original_keras_version = ‘1’
AttributeError: ‘str’ object has no attribute ‘decode’
加载比例值时出现问题。但我不知道如何修复它
回答:
您可能需要安装以下版本的h5py
,来源。
pip install -q h5py==2.10.0
供您参考,我在colab上能够重现您的错误,并通过上述解决方案解决了这个问题。