Хотя Eager_execution включен по умолчанию в TF 2.0, я получаю ошибки при использовании .numpy ()
Обратите внимание, что я не использую код в режиме совместимости с TF 1.0.
expt = [[[0, 0, 0],
[4, 71, 141],
[0, 0, 0]],
[[ 83, 25, 85],
[ 90, 190, 143],
[ 4, 141, 49]],
[[ 0, 0, 0],
[ 4, 71, 49],
[ 0, 0, 0]]]
expt = tf.convert_to_tensor (expt)
ожидаемые_значения = expt.numpy ()
AttributeError: объект 'Tensor' не имеет атрибута 'numpy'
ТЕСТОВАЯ ВЕРСИЯ ЦП TENSORFLOW 2.0.
@ Mainak431 Вы решили свою проблему?
да.
какое было твое решение?
.Numpy поддерживается только в активном режиме. Если вы находитесь в графическом режиме, он не будет поддерживаться. Чтобы проверить, находитесь ли вы в нетерпеливом режиме. Делай, tf.eagerly (). Возвращает истину или ложь. В режиме графика вы должны использовать eval в сеансе, чтобы получить значение тензора в массиве numpy.
@ Mainak431
модуль 'tenorflow' не имеет атрибута 'нетерпеливо'
модуль 'tensorflow.compat.v1' не имеет атрибута 'нетерпеливо'
Я использую пакет tensorflow-gpu == 2.0.0-alpha0
.numpy () на одном из моих тензоров yield 'Tensor' объект не имеет атрибута 'numpy'
tf.eagerly () дает модуль 'tensorflow' не имеет атрибута 'нетерпеливо'
tf.executing_eagerly () вместо tf.eagerly () работал у меня, чтобы проверить, нахожусь ли я в режиме ожидания
Кто-нибудь нашел для этого решение?
такая же проблема здесь ... я вызываю модель keras в режиме ожидания, и я получаю Tensor, а не EagerTensor, что вызывает проблемы с OpenAI Gym
Запустите эту tf.enable_eager_execution (), а затем, когда вы попробуете tf.executing_eagerly (), она должна дать True. После этого вы можете использовать something.numpy () для просмотра значений.
@AkashNagaraj Я только что подал сообщение о том, что код выполняется с нетерпением (и должен, поскольку это TF 2.0), но у меня проблема с "отсутствующим числом". Не могли бы вы взглянуть? https://github.com/tensorflow/tensorflow/issues/32842
Спасибо!
Я была такая же проблема. Оказалось, что я пытался использовать .numpy () внутри функции @ tf. Насколько я понимаю, tf.function не выполняется с нетерпением для повышения производительности. Если я удалю декоратор @ tf.function .numpy () будет работать.
Я была такая же проблема. Оказалось, что я пытался использовать .numpy () внутри функции @ tf. Насколько я понимаю, tf.function не выполняется с нетерпением для повышения производительности. Если я удалю декоратор @ tf.function .numpy () будет работать.
Это работает для меня, @ tf.function превратил всю функцию в режим графика
Почему в этой ветке не упоминается ни одного решения =. =
У моей функции нет декоратора, но .numpy () по-прежнему не работает, как описано в предыдущих плакатах. Кто-нибудь нашел решение этого?
Я обнаружил, что моя проблема устраняется после вставки tf.compat.v1.enable_eager_execution () в верхнюю часть моего скрипта (очень похоже на то, что было сказано в предыдущих плакатах, но это работает для TF 2.0) ...
У меня такая же проблема, и ни одно из вышеупомянутых решений не помогло мне.
Я использую TF 2.0, моя функция не имеет декоратора, tf.eagerly () возвращает True, и я все равно получаю тот же AttributeError: объект Tensor не имеет атрибута numpy.
Та же проблема.
Я убедился, что выполняю с нетерпением и у меня нет декоратора для моей пользовательской функции потерь. Я также попробовал два комментария Майкла, которые не сработали.
Я получаю сообщение об ошибке: AttributeError: объект 'Tensor' не имеет атрибута 'numpy'
Я заметил, что эта ошибка появляется только тогда, когда я пытаюсь преобразовать тензоры в numpy во время подбора модели. Я предполагаю, что это проблема формы.
Например, следующий тензор
tf.Tensor ([[1 3] [0 4]], shape = (2, 2), dtype = int64)
конвертируется с помощью .numpy (). Однако при попытке реализовать настраиваемую метрику для проблемы классификации y_true.numpy () и y_pred.numpy () повышают
AttributeError: объект Tensor не имеет атрибута numpy.
Вот один из примеров обоих y:
y_true:
print (y_true): Tensor ("density_ target: 0 ", shape = (None, None, None), dtype = float32)
print (введите (y_true)):
y_pred:
print (y_pred): Tensor ("density / Identity: 0 ", shape = (None, None, 6), dtype = float32)
печать (тип (пред)):
@renatomello У меня такая же проблема, как и у вас. Открыл новый выпуск: №35393.
@renatomello проблема все еще сохраняется при попытке реализовать настраиваемую метрику. Вы нашли обходной путь?
@renatomello проблема все еще сохраняется при попытке реализовать настраиваемую метрику. Вы нашли обходной путь?
Нет, я не. Я пытаюсь узнать, есть ли бэкэнд-функция TF / Keras, которая делает что-то подобное, с чем я могу работать. В противном случае мне просто придется создать его самому.
Я столкнулся с этой областью при использовании функций регулярных выражений при предварительной обработке данных. Использование логики Python требует использования tf.py_function
как указано в документации, и этого потока StackOverflow (примечание tf.py_func()
теперь tf.py_function()
)
Как только я изменил свой код с
data = fnames.map(process_path)
к
data = fnames.map(lambda x: tf.py_function(process_path, [x], [tf.string]))
код выполнен правильно.
Я столкнулся с этой проблемой при тестировании слоя TextVectorization
в TF2.1 с очень нестандартным split
. Что исправило для меня, так это передать dynamic=True
TextVectorization
.
Я заметил, что эта ошибка появляется только тогда, когда я пытаюсь преобразовать тензоры в numpy во время подбора модели. Я предполагаю, что это проблема формы.
Например, следующий тензор
tf.Tensor ([[1 3] [0 4]], shape = (2, 2), dtype = int64)
конвертируется с помощью .numpy (). Однако при попытке реализовать настраиваемую метрику для проблемы классификации y_true.numpy () и y_pred.numpy () повышают
AttributeError: объект Tensor не имеет атрибута numpy.
Вот один из примеров обоих y:
y_true:
print (y_true): Tensor ("density_ target: 0 ", shape = (None, None, None), dtype = float32)
print (введите (y_true)):y_pred:
print (y_pred): Tensor ("density / Identity: 0 ", shape = (None, None, 6), dtype = float32)
печать (тип (пред)):
Не знаю причины, но я решил эту проблему, добавив
experimental_run_tf_function=False
в функции компиляции моей модели.
Я заметил, что эта ошибка появляется только тогда, когда я пытаюсь преобразовать тензоры в numpy во время подбора модели. Я предполагаю, что это проблема формы.
Например, следующий тензор
tf.Tensor ([[1 3] [0 4]], shape = (2, 2), dtype = int64)
конвертируется с помощью .numpy (). Однако при попытке реализовать настраиваемую метрику для проблемы классификации y_true.numpy () и y_pred.numpy () повышают
AttributeError: объект Tensor не имеет атрибута numpy.
Вот один из примеров обоих y:
y_true:
print (y_true): Tensor ("density_ target: 0 ", shape = (None, None, None), dtype = float32)
print (введите (y_true)):
y_pred:
print (y_pred): Tensor ("density / Identity: 0 ", shape = (None, None, 6), dtype = float32)
печать (тип (пред)):Не знаю причины, но я решил эту проблему, добавив
experimental_run_tf_function=False
в функции компиляции моей модели.
В моем случае это не имеет значения
Я столкнулся с этой проблемой при тестировании слоя
TextVectorization
в TF2.1 с очень нестандартнымsplit
. Что исправило для меня, так это передатьdynamic=True
TextVectorization
.
Как именно вы это сделали?
Во-первых, вы должны зарегистрировать сеанс следующим образом:
сессия = tf.Session ()
затем..использовать:
ожидаемые_значения = исключение.значение (сеанс = сессия)
результат должен быть:
печать (ожидаемые_значения)
Из [41]:
array ([[[0, 0, 0],
[4, 71, 141],
[0, 0, 0]]])
благодарить
Я столкнулся с этой проблемой при тестировании слоя
TextVectorization
в TF2.1 с очень нестандартнымsplit
. Что исправило для меня, так это передатьdynamic=True
TextVectorization
.Как именно вы это сделали?
Нравится. Я все еще изучаю ОД / ФТ в целом, так что, возможно, я поступил неправильно. Это все черная магия, пока она «просто не сработает».
vectorize_layer = tf.keras.layers.experimental.preprocessing.TextVectorization(
standardize=tf_custom_standardize,
split=tf_custom_split,
max_tokens=len(vocab)+1,
output_mode='int',
dynamic=True
)
Эта проблема все еще сохраняется для меня. Я не использую аннотацию @ tf.function и выполняю ее с энтузиазмом. Обходной путь, который я использую сейчас, - np.array (yourtensor.to_list ())
Эта проблема все еще сохраняется для меня. Я не использую аннотацию @ tf.function и выполняю ее с энтузиазмом. Обходной путь, который я использую сейчас, - np.array (yourtensor.to_list ())
Это то, что я получаю
AttributeError: 'Tensor' object has no attribute 'to_list'
Согласно кодам в тензорном потоке, когда тензорный объект находится в активном режиме тензора (tensorflow.python.framework.ops.EagerTensor), мы могли бы вызвать tesnsorObj.numpy ()
этот метод реализован в tenorflow / python / framework / ops.py
Но если тензорный объект является общим тензорным, например, принадлежащим tenorflow.python.framework.ops.Tensor, тогда у него не будет метода numpy (), коды реализации также находятся в tensorflow / python / framework / ops.py
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/framework/ops.py
Это означает, что весь тензорный объект, запущенный в функции @ tf., не может вызвать tensorObj.numpy ()
Активный режим работы добавляет гибкости TF2.0, а также усложняет его.
Согласно кодам в тензорном потоке, когда тензорный объект находится в активном режиме тензора (tensorflow.python.framework.ops.EagerTensor), мы могли бы вызвать tesnsorObj.numpy ()
этот метод реализован в tenorflow / python / framework / ops.py
Но если тензорный объект является общим тензорным, например, принадлежащим tenorflow.python.framework.ops.Tensor, тогда у него не будет метода numpy (), коды реализации также находятся в tensorflow / python / framework / ops.py
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/framework/ops.pyЭто означает, что весь тензорный объект, запущенный в функции @ tf., не может вызвать tensorObj.numpy ()
Активный режим работы добавляет гибкости TF2.0, а также усложняет его.
Спасибо за подробное объяснение.
Однако в стабильной версии 2.1.0 эта проблема не решена. Мне было указано в # 38038, что это решено в версии tf-nightly 2.2.0.
@renatomello Я новичок в TF. Поэтому я не уверен, поможет ли следующее решить вашу проблему.
Я решаю ошибку AttributeError: 'Tensor' object has no attribute 'numpy'
, используя экспериментальную_run_functions_eagerly (True) .
Использую TF вер. 2.1 (Для получения подробной информации о версии см. Вывод консоли ниже). Позвольте объяснить, что я делаю с этим кодом:
import sys
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
import numpy as np
counter=0
class MyDense(layers.Dense):
def __init__(self, units, activation,input_shape):
super().__init__(units=units, activation=activation,input_shape=input_shape)
def call(self, inputs):
global counter
counter += 1
print('\n{}. inputs.numpy()='.format(counter))
if hasattr(inputs,'numpy'):
print('{}'.format(inputs.numpy()))
else:
print('not available.')
return super().call(inputs)
def test(run_eagerly):
print('\n*** *** *** test(run_eagerly={})'.format(run_eagerly))
tf.config.experimental_run_functions_eagerly(run_eagerly)
dim0=256
dim1=24
train = np.arange(dim0*dim1).reshape(dim0,dim1)
label = np.ones(dim0)
model = tf.keras.Sequential()
model.add(MyDense(10,activation='softmax',input_shape=(dim1,)))
model.compile(optimizer=tf.keras.optimizers.SGD(),
loss=tf.keras.losses.SparseCategoricalCrossentropy())
model.fit(train,
label,
batch_size=dim0,
epochs=1)
print("Python version")
print (sys.version)
print("TensorFlow version")
print(tf.__version__)
print('\n\n')
test(False)
test(True)
Я выполняю приведенный выше код в консоли редактора Spyder (Spyder Version 4.0.1). Соответствующий вывод консоли (только часть вывода):
Python version
3.7.6 (default, Jan 8 2020, 19:59:22)
[GCC 7.3.0]
TensorFlow version
2.1.0
*** *** *** test(run_eagerly=False)
1. inputs.numpy()=
not available.
Train on 256 samples
2. inputs.numpy()=
not available.
3. inputs.numpy()=
not available.
256/256 [==============================] - 0s 899us/sample - loss: 6344.8682
*** *** *** test(run_eagerly=True)
4. inputs.numpy()=
not available.
Train on 256 samples
5. inputs.numpy()=
[[2328. 2329. 2330. ... 2349. 2350. 2351.]
[5280. 5281. 5282. ... 5301. 5302. 5303.]
[2208. 2209. 2210. ... 2229. 2230. 2231.]
...
[5160. 5161. 5162. ... 5181. 5182. 5183.]
[ 840. 841. 842. ... 861. 862. 863.]
[6048. 6049. 6050. ... 6069. 6070. 6071.]]
256/256 [==============================] - 0s 132us/sample - loss: 16.1181
Теперь посмотрите на вывод консоли ниже test(run_eagerly=False)
: Все три вызова MyDense.call () находятся в состоянии, что input.numpy () недоступен (примечание: если я правильно понимаю, первые два MyDense.call () предназначены только для построения модели. Поэтому важно, что для них нет input.numpy ().). Итак, это имеет смысл.
См. Вывод консоли ниже test(run_eagerly=True)
: В пятом MyDense.call () доступен input.numpy (). Так что это тоже имеет значение. И это решает ошибку.
Я была такая же проблема. Оказалось, что я пытался использовать .numpy () внутри функции @ tf. Насколько я понимаю, tf.function не выполняется с нетерпением для повышения производительности. Если я удалю декоратор @ tf.function .numpy () будет работать.
Меня устраивает.
Я пробовал все решения, упомянутые в этой теме, и ни одно из них не помогло мне. Я на 2.2.0-rc2.
В моем случае это не проблема с нетерпеливым исполнением. Ошибка возникает из этих строк, когда я вызываю keras.backend.get_value()
:
if context.executing_eagerly() or isinstance(x, ops.EagerTensor):
return x.numpy()
Была такая же проблема. Оказывается, что по умолчанию нетерпеливое выполнение отключено при запуске функции подгонки на модели. Чтобы противостоять этому, вы можете запустить: model.run_eagerly = True
перед запуском model.fit.
Это сработало для меня как шарм на Tensorflow 2.2.
model.compile (..., run_eagerly = True) работал у меня при создании настраиваемой метрики
У меня была аналогичная проблема при работе с Керасом.
Не знаю, поможет ли это другим, но мне помогли следующие:
Я использовал:
model = Sequential () ранее и изменил это на
модель = tf.keras.Sequential ()
И у меня это сработало.
@ Mainak431 Не могли бы вы снова открыть проблему?
У меня была аналогичная проблема при работе с Керасом.
Не знаю, поможет ли это другим, но мне помогли следующие:
Я использовал:
model = Sequential () ранее и изменил это на
модель = tf.keras.Sequential ()
И у меня это сработало.
На самом деле это было для меня решением, я повторно использовал старый код, который импортировался непосредственно из keras, а не из слоев tensorflow.keras и т. Д., Изменение операторов импорта разрешило ошибку атрибута.
@Blubbaa То же самое. Это было единственное, что у меня сработало.
Если я хочу проверить значение в тензоре, но мне нужно отключить режим ожидания из-за совместимости с tf.placeholder
, как мне это сделать? Я пытался добавить tf.enable_eager_execution
между слоями без tf.placeholder
только чтобы получить эту ошибку ValueError: tf.enable_eager_execution must be called at program startup.
Следующий код работал:
def parse_str(str_tensor):
raw_string = str_tensor.numpy().decode("utf-8")
# play with raw string
raw_string = 'AAA'+raw_string
return raw_string
Вызов функции синтаксического анализа:
def tf_pre_processing(row):
return tf.py_function(parse_str, [row['context']], [tf.string])
train = t.map(tf_pre_processing).batch(1).take(1)
list(train)
@ Mainak431 Исходный код работал, как ожидалось. Вот суть.
@ tu1258 Нет необходимости отключать tf.compat.v1.placeholder
вместо tf.placeholder
. Если это по-прежнему не работает, поделитесь автономным кодом, чтобы воспроизвести проблему.
Пожалуйста, дайте мне знать, если возникнут еще вопросы. Спасибо!
Я была такая же проблема. Оказалось, что я пытался использовать .numpy () внутри функции @ tf. Насколько я понимаю, tf.function не выполняется с нетерпением для повышения производительности. Если я удалю декоратор @ tf.function .numpy () будет работать.
Я думаю, что следующий вариант в Tensorflow2.x может помочь
tf.config.run_functions_eagerly
В том месте, где вы вызываете tf.function, вы можете попытаться выполнить его быстро, а затем отключить активное выполнение для tf.function.
Я новичок в tenorflow, но следуя этому руководству (в Jupyter Notebook) https://www.tensorflow.org/tutorials/quickstart/beginner?hl=en , вы получите ошибку
predictions = model(x_train[:1]).numpy()
Tensor object has no attribute 'numpy'
@louisnot Я не могу воспроизвести ошибку. Пожалуйста, проверьте суть здесь . Спасибо!
Если вы столкнулись с ошибкой, не могли бы вы поделиться сутью? Спасибо!
Я не столкнулся с какими-либо проблемами при использовании сути.
Я закрываю эту проблему, так как она была решена в tf-nightly
. Если проблема не исчезнет, повторите попытку. Спасибо!
@bhupendrathore Не могли бы вы открыть новый выпуск с помощью простого автономного кода для воспроизведения ошибки? Спасибо!
У меня такая же проблема; когда я исправляю это в вашем решении с помощью pip install tf-nightly
, возникают ошибки:
ERROR: Could not find a version that satisfies the requirement tf-nightly (from versions: none)
ERROR: No matching distribution found for tf-nightly
@jvishnuvardhan
@liangzelang, я вижу, вы открыли еще один новый выпуск. мы решим это там. Спасибо
Самый полезный комментарий
Я была такая же проблема. Оказалось, что я пытался использовать .numpy () внутри функции @ tf. Насколько я понимаю, tf.function не выполняется с нетерпением для повышения производительности. Если я удалю декоратор @ tf.function .numpy () будет работать.