我有一台带有少量 NVidia GPU 的计算机,使用数据包 'segmentation_models' 并在 Unet 的基础上构建 NN:
import segmentation_models as sm
import keras.backend as K
from keras import optimizers
from keras.utils import multi_gpu_model
lr = 2e-4
NUM_GPUS = 3
learning_rate = lr * NUM_GPUS
adam = optimizers.Adam(lr=learning_rate)
def dice_coef(y_true, y_pred, smooth=1):
y_true_f = K.flatten(y_true)
y_pred_f = K.flatten(y_pred)
intersection = K.sum(y_true_f * y_pred_f)
return (2. * intersection + smooth) / (K.sum(y_true_f) + K.sum(y_pred_f) + smooth)
model = sm.Unet('efficientnetb3', encoder_weights='imagenet', classes=4, activation='softmax', encoder_freeze=False)
parallel_model = multi_gpu_model(model, gpus=NUM_GPUS)
model = parallel_model
model.compile(adam, 'categorical_crossentropy', [dice_coef])
history = model.fit_generator(
generator=train_gen, steps_per_epoch=len(train_gen), \
validation_data=validation_gen, \
epochs=50, callbacks=[clr, checkpoints, csv_logger],
initial_epoch=0)
训练后我保存权重以备将来在 cpu 模式下使用:
single_gpu_model = model.layers[-2]
single_gpu_model.save(single_proc_model_path_1_kernel)
我尝试使用这些权重:
import keras
model1 = keras.models.load_model(single_proc_model_path_1_kernel)
...
pr_mask = self.model1.predict(img_exp)
tensorflow/stream_executor/cuda/cuda_driver.cc:300] 调用 cuInit 失败:CUDA_ERROR_NO_DEVICE:未检测到支持 CUDA 的设备
tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libnvinfer.so.6'; dlerror: libnvinfer.so.6: cannot open shared object file: No such file or directory tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libnvinfer_plugin.so.6'; dlerror: libnvinfer_plugin.so.6: cannot open shared object file: No such file or directory tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:30] Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly. Segmentation Models: using
keras
framework. tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory tensorflow/stream_executor/cuda/cuda_driver.cc:351] failed call to cuInit: UNKNOWN ERROR (303) I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (b36a4cf2df2e): /proc/driver/nvidia/version does not exist
我应该更改什么以强制代码在只有 CPU 的机器上工作?
最佳答案
Tensorflow 1.15 解决了所有问题。谢谢。
https://stackoverflow.com/questions/60706122/
相关文章:
python-3.x - 在 python 中更快地读取大型 xlsb 文件
tensorflow - 转换后的 Tensorflow JS 模型报告缺少输入形状
typescript - 如何在 WebStorm/IntelliJ 中使用 ts-node 导入项
django - 有没有办法在 Django Rest Framework 和 Flutter 应用
c++ - 这是带有 std::any 或 std::is_copy_constructible 的
c# - 使用 C# Windows 10 是否可以判断视频/相机当前是否被任何应用程序使用?
image - Flutter web Image.network旋转图片
react-native - React Native 风格 textDecorationLine