【问题标题】:Convert a tensor of shape (?,32,24,24) into a 3D numpy array将形状 (?,32,24,24) 的张量转换为 3D numpy 数组
【发布时间】:2018-09-10 07:57:36
【问题描述】:

我有一个包含一批 32 个灰度图像的张量,每个图像的大小为 24x24。

张量是在使用 Keras 和 tensorflow 后端构建的 CNN 中的 Conv2D 层之后生成的。数据作为 numpy 数组提供给模型。

现在,我希望将输出张量转换为 numpy 数组,然后再转换回张量。

我参考了this page 并编写了这段似乎不起作用的简单代码

sess = tf.InteractiveSession()
ip = np.array(x.eval())

在这里,x 是我的张量,ip 是预期的 numpy 数组。这会抛出 InvalidArgumentError()。有什么办法可以摆脱未知 (?) 维度?

这是堆栈跟踪:

 Message=InvalidArgumentError()
  Source=c:\users\rangan\source\repos\fuzzycnn\fuzzycnn\fuzzyconv2d.py
  StackTrace:
  File "c:\users\rangan\source\repos\fuzzycnn\fuzzycnn\fuzzyconv2d.py", line 31, in call
    ip = np.array(x.eval())
  File "c:\program files (x86)\microsoft visual studio\shared\python36_64\lib\site-packages\keras\engine\base_layer.py", line 507, in __call__
    inputs=to_list(inputs))
  File "c:\program files (x86)\microsoft visual studio\shared\python36_64\lib\site-packages\keras\engine\sequential.py", line 185, in add
    output_tensor = layer(self.outputs[0])
  File "c:\users\rangan\source\repos\fuzzycnn\fuzzycnn\fuzzycnn.py", line 39, in baseline_model
    model.add(F_Conv2D(5))
  File "c:\users\rangan\source\repos\fuzzycnn\fuzzycnn\fuzzycnn.py", line 49, in <module>
    model = baseline_model()

【问题讨论】:

  • 请提供minimal reproducible example,包括我们可以运行的代码,用于演示问题、当前输出和预期输出。
  • 另外,如果出现错误,请复制/粘贴整个错误跟踪,而不仅仅是错误类型。

标签: python arrays numpy tensorflow


【解决方案1】:

根据定义,输出张量值是针对某个输入批次计算的。您需要将输入值传递给 eval 函数:

ip = x.eval(session=sess, feed_dict={input: X_batch})

只要 x 是感兴趣的张量并“输入”输入占位符,这是获取张量值的最简单方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-17
    • 2018-11-28
    • 2020-12-31
    • 2023-02-15
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多