记录一下如何在运行Yolo_v3的时候是如何解决标题的问题:
1.打开tensorflow_backend.py文件
在Anconda的安装路径下:D:\Anaconda\envs\tensorflow-gpu\Lib\site-packages\keras\backend
如下图所示:
2. 打开之后修改两个地方即可
①加入os.environ[“CUDA_VISIBLE_DEVICES”] = “0”
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import tensorflow as tf
from tensorflow.python.training import moving_averages
from tensorflow.python.ops import tensor_array_ops
from tensorflow.python.ops import control_flow_ops
from tensorflow.python.ops import functional_ops
from tensorflow.python.ops import ctc_ops as ctc
from tensorflow.python.ops import variables as tf_variables
from tensorflow.python.client import device_lib
from collections import defaultdict
import numpy as np
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.8
_SESSION = tf.Session(config = config)
from .common import floatx, epsilon
from .common import image_data_format
from ..utils.generic_utils import has_arg
- 修改def get_session():
如下
def get_session():
"""Returns the TF session to be used by the backend.
If a default TensorFlow session is available, we will return it.
Else, we will return the global Keras session.
If no global Keras session exists at this point:
we will create a new global session.
Note that you can manually set the global session
via `K.set_session(sess)`.
# Returns
A TensorFlow session.
"""
global _SESSION
default_session = tf.get_default_session()
if default_session is not None:
session = default_session
else:
if _SESSION is None:
# if not os.environ.get('OMP_NUM_THREADS'):
# config = tf.ConfigProto(allow_soft_placement=True)
# config = tf.ConfigProto()
# else:
# num_thread = int(os.environ.get('OMP_NUM_THREADS'))
# config = tf.ConfigProto(intra_op_parallelism_threads=num_thread,
# allow_soft_placement=True)
config = tf.ConfigProto()
# config.gpu_options.allow_growth = False
config.gpu_options.per_process_gpu_memory_fraction=0.8#程序最多只能占用指定gpu80%的显存
_SESSION = tf.Session(config=config)
session = _SESSION
if not _MANUAL_VAR_INIT:
with session.graph.as_default():
variables = tf.global_variables()
candidate_vars = []
for v in variables:
if not getattr(v, '_keras_initialized', False):
candidate_vars.append(v)
if candidate_vars:
# This step is expensive, so we only run it on variables
# not already marked as initialized.
is_initialized = session.run(
[tf.is_variable_initialized(v) for v in candidate_vars])
uninitialized_vars = []
for flag, v in zip(is_initialized, candidate_vars):
if not flag:
uninitialized_vars.append(v)
v._keras_initialized = True
if uninitialized_vars:
session.run(tf.variables_initializer(uninitialized_vars))
# hack for list_devices() function.
# list_devices() function is not available under tensorflow r1.3.
if not hasattr(session, 'list_devices'):
session.list_devices = lambda: device_lib.list_local_devices()
return session
主要是修改config.gpu_options部分,然后就可以正常运行啦!