Я пытаюсь написать программу для игры, похожей на игры Atari. подробности об этом:
В этой игре объекты падают под разными углами и направлениями, и цель агента - перехватить их, используя поток. каждое состояние состоит из обратной связи, предоставляемой средой после каждого действия. обратная связь состоит из угла потока, местоположения объекта, местоположения перехвата и общего балла. Есть четыре возможных действия для выбора агента.
Я решил попробовать и реализовать программу, используя Q-глубокое обучение, расчеты потерь и градиентного спуска. Я использую tenorflow с Python 3.6.7
У меня есть эта проблема:
C:\Users\elinor\AppData\Local\Programs\Python\Python36\python.exe C:/Users/elinor/Desktop/Intrcpt/ddqn.py
2019-10-15 13:14:15.946083: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d (Conv2D) (None, 30, 30, 32) 896
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 15, 15, 32) 0
_________________________________________________________________
conv2d_1 (Conv2D) (None, 13, 13, 64) 18496
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 6, 6, 64) 0
_________________________________________________________________
conv2d_2 (Conv2D) (None, 4, 4, 64) 36928
_________________________________________________________________
flatten (Flatten) (None, 1024) 0
_________________________________________________________________
dense (Dense) (None, 64) 65600
_________________________________________________________________
dense_1 (Dense) (None, 10) 650
=================================================================
Total params: 122,570
Trainable params: 122,570
Non-trainable params: 0
_________________________________________________________________
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_3 (Conv2D) (None, 30, 30, 32) 896
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 15, 15, 32) 0
_________________________________________________________________
conv2d_4 (Conv2D) (None, 13, 13, 64) 18496
_________________________________________________________________
max_pooling2d_3 (MaxPooling2 (None, 6, 6, 64) 0
_________________________________________________________________
conv2d_5 (Conv2D) (None, 4, 4, 64) 36928
_________________________________________________________________
flatten_1 (Flatten) (None, 1024) 0
_________________________________________________________________
dense_2 (Dense) (None, 64) 65600
_________________________________________________________________
dense_3 (Dense) (None, 10) 650
=================================================================
Total params: 122,570
Trainable params: 122,570
Non-trainable params: 0
_________________________________________________________________
Traceback (most recent call last):
File "C:/Users/elinor/Desktop/Intrcpt/ddqn.py", line 162, in <module>
exec_process()
File "C:/Users/elinor/Desktop/Intrcpt/ddqn.py", line 82, in exec_process
history = network.fit(state, epochs=10, batch_size=10)
File "C:\Users\elinor\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow_core\python\keras\engine\training.py", line 728, in fit
use_multiprocessing=use_multiprocessing)
File "C:\Users\elinor\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow_core\python\keras\engine\training_v2.py", line 224, in fit
distribution_strategy=strategy)
File "C:\Users\elinor\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow_core\python\keras\engine\training_v2.py", line 547, in _process_training_inputs
use_multiprocessing=use_multiprocessing)
File "C:\Users\elinor\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow_core\python\keras\engine\training_v2.py", line 594, in _process_inputs
steps=steps)
File "C:\Users\elinor\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow_core\python\keras\engine\training.py", line 2472, in _standardize_user_data
exception_prefix='input')
File "C:\Users\elinor\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow_core\python\keras\engine\training_utils.py", line 574, in standardize_input_data
str(data_shape))
ValueError: Error when checking input: expected conv2d_input to have shape (32, 32, 3) but got array with shape (1, 1, 1)
Process finished with exit code 1
и я не могу понять, как я могу это исправить. Я понимаю, что проблема связана с измерениями, но я не знаю, как правильно это написать, хотя я пробовал много синтаксических структур, которые я нашел в Интернете. возможно кто-нибудь знает как я могу это решить?
вот проблемные части:
`state = tf.reshape(state, shape=(1,1,1,1))`
history = network.fit(state, epochs=10, batch_size=10)
, а также:
state = np.ndarray(shape=(1, 1, 1, 1), dtype=float)
вот полный код: ссылка
также, я не уверен, что передаю параметры в тренинг какЯ должен. Я использовал несколько руководств для написания этой программы, и я не могу обойтись без одной главной проблемы - на каком этапе параметры, такие как состояние и вознаграждение, передаются в сеть? возможно, кто-то знает об этом и может помочь мне понять, делаю ли я что-то не так?
Большое спасибо за ваше время и внимание!