0

工作,我試圖寫入自駕車在Python和Tensorflow與此代碼:如果語句不上Tensorflow變量

import tensorflow as tf 
from PIL import ImageGrab 
import numpy as np 
import pyautogui as pag 
import time 

x_p = tf.placeholder(tf.uint8) 
y_p = tf.placeholder(tf.float32) 

weights = [tf.Variable(tf.random_normal([5,5,3,32],0.1)), 
      tf.Variable(tf.random_normal([5,5,32,64],0.1)), 
      tf.Variable(tf.random_normal([5,5,64,128],0.1)), 
      tf.Variable(tf.random_normal([25*25*128,1064],0.1)), 
      tf.Variable(tf.random_normal([1064,1],0.1))] 

def CNN(x, weights): 
    output = tf.nn.conv2d(x, weights[0], [1,1,1,1], 'SAME') 
    output = tf.nn.relu(output) 
    output = tf.nn.conv2d(output, weights[1], [1,2,2,1], 'SAME') 
    output = tf.nn.relu(output) 
    output = tf.nn.conv2d(output, weights[2], [1,2,2,1], 'SAME') 
    output = tf.nn.relu(output) 
    output = tf.reshape(output, [-1,25*25*128]) 
    output = tf.matmul(output, weights[3]) 
    output = tf.nn.relu(output) 
    output = tf.matmul(output, weights[4]) 
    output = tf.reduce_sum(output) 
    return output 

prediction = CNN(tf.cast(x_p, tf.float32), weights) 
saver = tf.train.Saver() 
init = tf.global_variables_initializer() 

with tf.Session() as sess: 
    sess.run(init) 
    saver.restore(sess, 'saved/model.ckpt') 
    for t in range(5): 
     print(t+1) 
     time.sleep(1) 

    while True: 
     x = ImageGrab.grab() 
     x = x.resize((100,100)) 
     x = np.asarray(x) 
     output = sess.run(prediction, feed_dict={x_p:[x]}) 
     print(output) 
     if output < 0.5 and output > 1.5: 
      pag.keyDown('W') 
      pag.keyUp('S') 
      pag.keyUp('D') 
      pag.keyUp('A') 
     elif output < 1.5 and output > 2.5: 
      pag.keyUp('W') 
      pag.keyDown('S') 
      pag.keyUp('D') 
      pag.keyUp('A') 
     elif output < 2.5 and output > 3.5: 
      pag.keyDown('W') 
      pag.keyUp('S') 
      pag.keyDown('D') 
      pag.keyUp('A') 
     elif output < 3.5 and output > 4.5: 
      pag.keyDown('W') 
      pag.keyUp('S') 
      pag.keyUp('D') 
      pag.keyDown('A') 
     elif output < 4.5 and output > 5.5: 
      pag.keyDown('W') 
      pag.keyUp('S') 
      pag.keyDown('D') 
      pag.keyUp('A') 
     elif output < 5.5 and output > 6.5: 
      pag.keyDown('W') 
      pag.keyUp('S') 
      pag.keyUp('D') 
      pag.keyDown('A') 
     elif output < 6.5 and output > 7.5: 
      pag.keyUp('W') 
      pag.keyDown('S') 
      pag.keyDown('D') 
      pag.keyUp('A') 
     elif output < 7.5 and output > 8.5: 
      pag.keyUp('W') 
      pag.keyDown('S') 
      pag.keyUp('D') 
      pag.keyDown('A') 
     else: 
      pag.keyUp('W') 
      pag.keyUp('S') 
      pag.keyUp('D') 
      pag.keyUp('A') 

但問題是,只有else語句火災,即使輸出有(例如)值1.3。我能夠發現,問題是由if語句中的變量輸出引起的,但我沒有設法解決這個問題。

+3

你的邏輯是有缺陷的。一個數字如何能同時小於1.5和大於2.5?我認爲你的意思是'elif 1.5 <輸出<2.5:'? – Carcigenicate

回答

0

您的if語句有問題。

if output < 0.5 and output > 1.5: 

你的輸出不能低於0.5,同時優於1.5。所以if語句一直是錯誤的。

的問題是所有其他的elif

我想你想要寫的一樣:

if output > 0.5 and output < 1.5: 
+0

我改變了,但問題仍然存在 –

+0

你改變了所有的elif呢? –

+0

無論如何,新的if語句以及輸出(打印)爲1.3的情況下,都應該放入它! –