我正在尝试针对 10x10栅格地图上的寻路问题训练神经网络,但似乎不起作用。这是详细信息:
我对神经网络的输入是10x10x2矩阵,其中第一个10x10代表地图上的障碍物,第二个10x10代表两个点,初始点和终点。
我对系统的输出是A *算法找到的最短路径。我编写了一个代码,该代码可以生成所需数量的案例,并且在生成案例之后,A *会找到最佳路径。我想教如何找到通往神经网络的途径。例如,4x4情况的一般结构如下所示。
obstacles matrix(input):
0 0 0 0
0 1 1 1
0 1 1 0
0 0 0 0
initial and final point matrix(input):
0 1 0 0
0 0 0 0
0 0 0 1
0 0 0 0
route(desired output):
1 1 0 0
1 0 0 0
1 0 0 1
1 1 1 1
我还要添加一个案例的图片和神经网络的输出。
障碍物
起点和目标点
所需路线
组合图像
到目前为止,我已经描述了神经网络的输入和输出。我正在尝试使用3个完全连接的层来训练网络,但似乎无法学习该模式。这是我的网络:
x = tf.placeholder(dtype=tf.float32, shape=[None,10,10,2])
y = tf.placeholder(dtype=tf.float32, shape=[None,10,10])
rate = tf.placeholder(dtype=tf.float32)
# flatten the input
x_flatten = tf.contrib.layers.flatten(x)
y_flatten = tf.contrib.layers.flatten(y)
# fully connected layer
fc = tf.layers.dense(inputs=x_flatten, units=1000, activation=tf.nn.tanh)
fc = tf.layers.dropout(fc, rate=rate, training=True) # rate = 0.3
fc = tf.layers.dense(inputs=fc, units=500, activation=tf.nn.tanh)
logits = tf.layers.dense(inputs=fc, units=100, activation=None)
cost = tf.reduce_mean(tf.abs(logits - y_flatten))
optimizer = tf.train.AdamOptimizer().minimize(cost)
最后,我将经过1000个案例和20个时期的训练后的NN的结果与基本事实相加。
培训成果
测试结果
我也尝试过CNN,但它也没有用。任何建议都将受到欢迎,谢谢。