如何使用黑白图像作为张量流的输入

时间:2019-01-29 03:40:37

标签: tensorflow

使用张量流实现强化学习时,输入为黑白图像。每个像素可以表示为1/0位。

我是否可以将数据直接提供给tensorflow,并将每一位作为特征?或者我必须在发送到tensorflow之前将位扩展为字节?我是tensorflow的新手,所以一些代码示例会很好。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以像平常一样直接加载Image数据,二进制图像将不会起作用,除了输入通道的输入宽度变为1之外。

每当通过卷积网络放置映像时,每个输出过滤器通常都会学习所有通道的功能,因此,对于二进制映像,将为每个输入通道/输出通道组合定义一个单独的内核(因为只有1个输入频道)。

每个通道都由number of filters定义,每个输入通道都有一个2D内核,该内核在所有滤波器上取平均值,因此权重/参数等于input_channels * number_of_filters * filter_dims,在这里是第一层input_channels成为一个。

由于您要求提供一些示例代码。 让您的图像位于张量X中,只需使用

X_out = tf.nn.conv2d(X, filters = 6, kernel_size = [height,width])

之后,您可以应用激活,这将使您的输出图像具有6个通道。如果您遇到任何问题或有任何疑问,请随时发表评论,为澄清理论,请查看https://www.coursera.org/learn/convolutional-neural-networks/lecture/nsiuW/one-layer-of-a-convolutional-network

修改

由于问题是关于简单的神经网络,而不是转换网络,所以这里是代码,

X_train是用于以(n_x,n_x)字节分辨率存储图像的变量,以后将使用n_x。

您将需要拼合输入。

X_train_flatten = X_train_orig.reshape(X_train_orig.shape[0], -1).T 首先将图像水平展平,然后将其转置以垂直排列。

然后,您将创建占位符张量X

X = tf.placeholder(tf.bool,[n_x*n_x,None])#您的输入张量应具有与输入图层相同的尺寸。

W, b分别是权重和偏见。

Z1 = tf.add(tf.matmul(W1,X),b1)  #Linear Transformation step
A1 = tf.nn.relu(Z1)              #Activation Step

您继续创建图形,我认为这可以回答您的问题,即使不告诉我。