我有一个TensorFlow数据集,包含将近15000张彩色图像,分辨率为168*84,每个图像都有标签。其类型和形状如下:
<;连接数据集形状:((168,84,3),()),类型:(tf.float32型, tf.int32型)>
我需要用它来训练我的网络。那个这就是为什么我需要将它作为参数传递给我在其中构建层的函数:
def cnn_model_fn(features, labels, mode):
input_layer = tf.reshape(features["x"], [-1, 168, 84, 3])
# Convolutional Layer #1
conv1 = tf.layers.conv2d(
inputs=input_layer,
filters=32,
kernel_size=[5, 5],
padding="same",
activation=tf.nn.relu)
.
.
.
我试着把每个张量转换成np.数组(我想这是上面函数的正确类型)使用tf.评估()和np.拉威尔(). 但我失败了。在
那么,我如何将这个数据集转换成正确的类型来传递给函数呢?在
加上
我是python和tensorflow的新手,我想我不明白为什么会有数据集,如果我们不能直接使用它们来构建层(我正在遵循tensorflow网站btw中的教程)。在
谢谢。在
您可以尝试立即执行,以前我用session run给出了一个答案(如下所示)。
在急切执行期间,对张量使用.numpy()会将该张量转换为numpy数组。
示例代码(来自我的用例):
旧,会话运行,回答:
我最近遇到了这个问题,我是这样做的:
^{pr2}$我还需要完成这个任务(从数据集到数组),但不需要打开急切模式。我想出了以下办法:
它的作用:
我们从一个包含2个形状为
(2,)
的张量的数据集开始。在由于eager已关闭,我们需要通过Tensorflow会话运行数据集。由于会话需要张量,所以我们必须将数据集转换为张量。在
为此,我们使用
Dataset.reduce()
将所有元素放入TensorArray
(象征性地)。在我们现在使用
TensorArray.concat()
将整个数组转换为一个张量。然而,当我们这样做时,整个数据集变成了一个一维数组。所以我们需要tf.reshape()
把它恢复到原来的张量形状,再加上一个额外的维度来将它们全部叠加起来。在最后我们用张量,在一个会话中运行它。这就给了我们新的机会。在
这听起来不像是使用Tensorflow数据集管道进行设置,以下是操作指南:
https://www.tensorflow.org/programmers_guide/datasets
您可以遵循这个方法(这是正确的方法,但是需要一个小的学习曲线来适应它),也可以将numpy数组作为
feed_dict
参数的一部分传递给sess.run
。如果您这样做,那么您应该只创建一个tf.placeholder
,它将由feed_dict
中的值填充。这里的许多基本教程示例都遵循这种方法:https://github.com/aymericdamien/TensorFlow-Examples
相关问题 更多 >
编程相关推荐