如何将numpy数组转换为标准的TensorFlow格式?

Kes*_*ary 26 python numpy machine-learning tensorflow

我有两个numpy数组

  • 一个包含验证码图像和
  • 包含相应标签的另一个标签(采用单热矢量格式)

我想将它们加载到TensorFlow中,这样我就可以使用神经网络对它们进行分类.如何才能做到这一点 ?

numpy数组需要具有什么形状?

附加信息 - 我的图像为60(高)×160(宽)像素,每个像素都有5个字母数字字符

这是一个示例图像. 每个标签是5乘62阵列.

小智 33

你可以使用tf.convert_to_tensor():

import tensorflow as tf
import numpy as np

data = [[1,2,3],[4,5,6]]
data_np = np.asarray(data, np.float32)

data_tf = tf.convert_to_tensor(data_np, np.float32)

sess = tf.InteractiveSession()  
print(data_tf.eval())

sess.close()
Run Code Online (Sandbox Code Playgroud)


Ali*_*Ali 7

为此,您可以使用tf.pack(TensorFlow 1.0.0中的tf.stack)方法.以下是如何将类型的随机图像打包numpy.ndarrayTensor:

import numpy as np
import tensorflow as tf
random_image = np.random.randint(0,256, (300,400,3))
random_image_tensor = tf.pack(random_image)
tf.InteractiveSession()
evaluated_tensor = random_image_tensor.eval()
Run Code Online (Sandbox Code Playgroud)

更新:要将Python对象转换为Tensor,您可以使用tf.convert_to_tensor函数.

  • 没有tf.pack (2认同)
  • 在 `tf.pack` 后面的括号中,我提到如果 TensorFlow,你应该在较新版本中使用 `tf.stack`! (2认同)

Sun*_*Kim 5

您可以使用占位符和feed_dict.

假设我们有像这样的numpy数组:

trX = np.linspace(-1, 1, 101) 
trY = 2 * trX + np.random.randn(*trX.shape) * 0.33 
Run Code Online (Sandbox Code Playgroud)

您可以声明两个占位符:

X = tf.placeholder("float") 
Y = tf.placeholder("float")
Run Code Online (Sandbox Code Playgroud)

然后,在模型,成本等中使用这些占位符(X和Y):model = tf.mul(X,w)...... Y ......

最后,当您运行模型/成本时,使用feed_dict提供numpy数组:

with tf.Session() as sess:
.... 
    sess.run(model, feed_dict={X: trY, Y: trY})
Run Code Online (Sandbox Code Playgroud)