使用张量流实现强化学习时,输入为黑白图像。每个像素可以表示为1/0位。
我是否可以将数据直接提供给tensorflow,并将每一位作为特征?或者我必须在发送到tensorflow之前将位扩展为字节?我是tensorflow的新手,所以一些代码示例会很好。
谢谢
答案 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
您继续创建图形,我认为这可以回答您的问题,即使不告诉我。