如何将numpy数组转换为keras张量

Posted

技术标签:

【中文标题】如何将numpy数组转换为keras张量【英文标题】:how to convert numpy array to keras tensor 【发布时间】:2019-03-19 21:26:32 【问题描述】:

使用 keras 模型进行预测时,出现以下错误

AttributeError: 'Tensor' 对象没有属性 'ndim'

原因是权重是numpy数组,而不是张量。 那么呢?

【问题讨论】:

你试过this吗? 谢谢你,Bazingaa。我正在使用 Keras。 keras张量有办法吗? 好的,我只是想代表你在谷歌上解决这个问题。也许尝试使用 this 使用 .variable 谢谢你,Bazingaa。它不起作用。 嗨,你能提供更多的上下文吗? here你可以找到一些好的建议来帮助我们帮助你 【参考方案1】:

要将numpy数组转换为张量,

import tensor as tf
#Considering y variable holds numpy array
y_tensor = tf.convert_to_tensor(y, dtype=tf.int64) 

#您可以使用任何最适合的可用数据类型 - https://www.tensorflow.org/api_docs/python/tf/dtypes/DType

【讨论】:

也可以使用import tensorflow as tf【参考方案2】:

在 TensorFlow 中可以通过以下方式完成:

import tensorflow.keras.backend as K
import numpy as np

a = np.array([1,2,3])
b = K.constant(a)
print(b)

# <tf.Tensor 'Const_1:0' shape=(3,) dtype=float32>

print(K.eval(b))

# array([1., 2., 3.], dtype=float32)

在原始 keras 中,应该将 import tensorflow.keras.backend as K 替换为 from keras import backend as K

【讨论】:

根据 Keras 的文档,变量与张量不同。 &gt;&gt;&gt; keras_var = K.variable(np_var)` <br> &gt;&gt;&gt; K.is_keras_tensor(keras_var) # 变量不是张量。<br> False<br> &gt;&gt;&gt; keras_placeholder = K.placeholder (shape=(2, 4, 5))<br> &gt;&gt;&gt; K.is_keras_tensor(keras_placeholder) # 占位符就是张量。<br> True<br> 你说得对,我刚刚更新了我的答案以使用 K.constant() 而不是 K.variable(),它返回一个张量而不是 print() 所说的变量 这简直太完美了!谢谢

以上是关于如何将numpy数组转换为keras张量的主要内容,如果未能解决你的问题,请参考以下文章

Keras:ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型列表)

尝试连接 keras 模型:ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型浮点数)

将 numpy 转换为张量(keras)(损失函数)

如何将 pytorch 张量转换为 numpy 数组?

将张量变量(非常数)转换为 numpy 数组? [复制]

如何快速将返回的 Python-in-Lua numpy 数组转换为 Lua Torch 张量?