如何将Tensor转换为NumPy数组

时间:2020-09-22 06:49:54

标签: python numpy tensorflow tensor

我已经根据自己的数据训练了function test(max, n) { const r = ~~(Math.random() * (max + 1)); console.log(r); if (r !== n) test(max, n); } test(6, 6); // max 6, stop if 6模型。我想在进行预测时获取自定义图层的输出。我尝试使用下面的代码获取自定义层的输出,它以张量格式给出数据,但是我需要ResNet50格式的数据。我试图将张量转换为NumPy数组,但出现错误,我遵循了这个post,但没有帮助

任何人都可以分享一些想法,任何建议将非常有帮助

NumPy array

我尝试过的事情

选项1

from keras.models import load_model
import tensorflow as tf
import numpy as np

config = tf.ConfigProto()
config.gpu_options.allow_growth = True
tf.Session(config=config)

model = load_model(model_path) # load trained model

data = load_data(data_path) # load data for predictions
result = model.predict(data)
print(type(result_dev))
#<class 'numpy.ndarray'> 

result = model.get_layer('avg_pool').output
print(type(result))
#<class 'tensorflow.python.framework.ops.Tensor'>

AttributeError:“ Tensor”对象没有属性“ numpy”

选项2

result = result.numpy()

2020-09-22 11:21:59.522138:我 tensorflow / stream_executor / cuda / cuda_gpu_executor.cc:983]成功 从SysFS读取的NUMA节点的值为负(-1),但必须存在 至少一个NUMA节点,因此返回NUMA节点为零2020-09-22 11:21:59.522343:我 tensorflow / core / common_runtime / gpu / gpu_device.cc:1618]找到设备0 具有属性:

已安装依赖项:

result = result.eval(session=tf.compat.v1.Session())

3 个答案:

答案 0 :(得分:0)

您只能在Eager执行期间将张量转换为numpy数组。由于您使用的版本早于2.0,因此默认情况下未启用该功能。

在任何情况下,您都可以在导入张量流后调用它:

tf.compat.v1.enable_eager_execution()

根据您的框架和用例,您可能还必须运行tf.config.run_functions_eagerly(如果在任何地方定义了tf.function)。为了更好地支持Eager模式,您应该将tensorflow升级到最新版本并使用tf.keras,因为您的代码可能无法与旧的独立版本Keras一起正常工作。在较新的版本中,您可以指定keras模型像这样热切地运行:

model.run_eagerly = True

答案 1 :(得分:0)

可以使用以下enum Foo { a = 'a', b = 'b' } type TFoo = { [k in Foo]: boolean; } const foo1: TFoo = { a: true, b: false} // good // const foo2: TFoo = { a: true } // bad: missing b // const foo3: TFoo = { a: true, b: 0} // bad: b is not a boolean // So type does roughly what I'd expect and want interface IFoo { // [k in Foo]: boolean; /* Uncommenting the above line gives the following errors: A computed property name in an interface must refer to an expression whose type is a literal type or a 'unique symbol' type. A computed property name must be of type 'string', 'number', 'symbol', or 'any'. Cannot find name 'k'. */ } // ??? 函数将tensor转换为numpy数组:

tensorflow

例如:

import tensorflow as tf
tf.make_ndarray(
    tensor
)

答案 2 :(得分:0)

最后提到的方法heretensorflow-gpu==2.0.0keras==2.2.4一起为我工作