#python #performance #tensorflow
#python #Производительность #tensorflow
Вопрос:
Я пытаюсь начать работу с tensorflow, используя интерфейс python. Моя проблема в том, что выполнение даже самых простых операций занимает много времени (> 5 минут)
Эта проблема возникает при использовании python3.6, установленного из macports, и tensorflow-1.13, tf-nightly, и tensorflow2.0 alpha, все установленные с использованием pip.
Выполнение этого простого примера занимает более 5 минут.
> ipython
Python 3.6.8 (default, Dec 30 2018, 13:01:27)
In [1]: import numpy as np
In [2]: import tensorflow as tf
In [3]: print(tf.__version__)
1.13.1
In [4]: a = tf.constant(4.0, dtype=tf.float32)
Через некоторое время я прервал выполнение, обратная трассировка приведена ниже. У кого-нибудь есть предложения?
KeyboardInterrupt
Обратная трассировка (последний последний вызов) в
----> 1 a = tf.constant(4.0, dtype=tf.float32)
/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/framework/constant_op.py в
constant_v1 (значение, dtype, shape, name, verify_shape)
177 """
178 return _constant_impl(value, dtype, shape, name, verify_shape=verify_shape,
--> 179 allow_broadcast=False)
180
181
/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/framework/constant_op.py в
_constant_impl(значение, dtype, форма, имя, verify_shape, разрешенная передача)
287 attrs={"value": tensor_value,
288 "dtype": dtype_value},
--> 289 name=name).outputs[0]
290 return const_tensor
291
/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py в
new_func(*аргументы, **kwargs)
505 'in a future version' if date is None else ('after %s' % date),
506 instructions)
--> 507 return func(*args, **kwargs)
508
509 doc = _add_deprecated_arg_notice_to_docstring(
/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/framework/ops.py в
create_op (не удалось разрешить аргументы)
3298 input_types=input_types,
3299 original_op=self._default_original_op,
-> 3300 op_def=op_def)
3301 self._create_op_helper(ret, compute_device=compute_device)
3302 return ret
/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/framework/ops.py в
инициализация (self, node_def, g, входы, output_types, control_inputs, input_types, original_op, op_def)
1821 op_def, inputs, node_def.attr)
1822 self._c_op = _create_c_op(self._graph, node_def, grouped_inputs,
-> 1823 control_input_ops)
1824
1825 # Initialize self._outputs.
/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/framework/ops.py in
_create_c_op(graph, node_def, inputs, control_inputs)
1654 # TODO(skyewm): this creates and deletes a new TF_Status for every attr.
1655 # It might be worth creating a convenient way to re-use the same status.
-> 1656 c_api.TF_SetAttrValueProto(op_desc, compat.as_str(name), serialized)
1657
1658 try:
KeyboardInterrupt:
Комментарии:
1. Это довольно любопытно. Выполняется ли вычисление на CPU или GPU?
2. вы используете tensorflow или tensorflow-gpu?
3. У меня точно такая же проблема. Вчера обновил keras, tensorflow и т.д. Из macports. В моем случае он зависал при создании слоя Input (). Трассировка заканчивается точно в том же месте (точно в той же строке в c_api). top показывает, что python использует 100% одного ядра процессора, а использование памяти постоянно увеличивается (через 2,5 минуты это более 750 МБ).