仅使用神经网络进行路径查找

时间:2019-12-12 12:19:53

标签: tensorflow neural-network path-finding

我正在尝试针对 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

我还要添加一个案例的图片和神经网络的输出。

障碍物

obstacles

起点和目标点

start and target points

所需路线

desired route

组合图像

combined image

到目前为止,我已经描述了神经网络的输入和输出。我正在尝试使用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的结果与基本事实相加。

培训成果

training outcome

测试结果

test outcome

我也尝试过CNN,但它也没有用。任何建议都将受到欢迎,谢谢。

0 个答案:

没有答案