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

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

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

原因是权重是numpy数组,而不是张量。
那么如何将numpy数组转换为keras张量呢?

【问题讨论】:

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

标签: python numpy keras


【解决方案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() 所说的变量
  • 这简直太完美了!谢谢
猜你喜欢
  • 2021-08-25
  • 2020-01-23
  • 2021-05-31
  • 2021-01-08
  • 1970-01-01
  • 2020-08-17
  • 2021-10-17
  • 2018-11-28
  • 2019-06-13
相关资源
最近更新 更多