Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ValueError:layer sequential_5的输入0与layer::expected min_ndim=4不兼容,found ndim=2。收到完整形状:[无,953] 将pyautogui导入为pg 从PIL导入ImageGrab,ImageOps 将numpy作为np导入 导入tensorflow作为tf 从tensorflow进口keras 从时间上导入睡眠 从tensorflow.keras.layers导入* 进口cv2 随机输入 方框=(0259953428) def bigjump(): pg.keyDown(“空格”) 睡眠(0.1) pg.keyUp(“空格”) def smalljump(): pg.press(“空格”) def duck(): pg.keyDown(“向下”) 睡眠(0.4) pg.keyUp(“向下”) def noting(): 睡眠(0.1) screen=ImageGrab.grab(bbox=box) 屏幕=图像操作灰度(屏幕) 屏幕\u n=np.数组(屏幕)/255 model=keras.models.Sequential() add(Conv2D(32,(8,8),步幅=(2,2))) model.add(MaxPoolig2D(池大小=(2,2))) 添加(激活('relu')) add(Conv2D(64,(4,4),步幅=(2,2),填充='same')) model.add(MaxPoolig2D(池大小=(2,2))) 添加(激活('relu')) add(Conv2D(64,(3,3),步幅=(1,1),填充='same')) model.add(MaxPoolig2D(池大小=(2,2))) 添加(激活('relu')) model.add(展平()) 添加(密集(512,activation='relu')) 模型.添加(密度(4)) compile(优化器='adam',loss='mean\u square\u error',metrics=['accurrent'])) 模型构建((169953)) model.summary() 完成=0 计数=0 折扣=0.99 最大事件数=1000 state_list=list() q_list=list() replay_mem=list() 重播大小=32 重播限制=2048 对于范围内的剧集(最多剧集): 虽然没有这样做: 计数+=1 e=1/((第10集)+1) screen=ImageGrab.grab(bbox=box) screen\u n=np.数组(图像操作灰度(屏幕))/255 q=模型预测(屏幕) 如果np.random.rand(1)_Python_Tensorflow_Keras_Deep Learning_Q Learning - Fatal编程技术网

Python ValueError:layer sequential_5的输入0与layer::expected min_ndim=4不兼容,found ndim=2。收到完整形状:[无,953] 将pyautogui导入为pg 从PIL导入ImageGrab,ImageOps 将numpy作为np导入 导入tensorflow作为tf 从tensorflow进口keras 从时间上导入睡眠 从tensorflow.keras.layers导入* 进口cv2 随机输入 方框=(0259953428) def bigjump(): pg.keyDown(“空格”) 睡眠(0.1) pg.keyUp(“空格”) def smalljump(): pg.press(“空格”) def duck(): pg.keyDown(“向下”) 睡眠(0.4) pg.keyUp(“向下”) def noting(): 睡眠(0.1) screen=ImageGrab.grab(bbox=box) 屏幕=图像操作灰度(屏幕) 屏幕\u n=np.数组(屏幕)/255 model=keras.models.Sequential() add(Conv2D(32,(8,8),步幅=(2,2))) model.add(MaxPoolig2D(池大小=(2,2))) 添加(激活('relu')) add(Conv2D(64,(4,4),步幅=(2,2),填充='same')) model.add(MaxPoolig2D(池大小=(2,2))) 添加(激活('relu')) add(Conv2D(64,(3,3),步幅=(1,1),填充='same')) model.add(MaxPoolig2D(池大小=(2,2))) 添加(激活('relu')) model.add(展平()) 添加(密集(512,activation='relu')) 模型.添加(密度(4)) compile(优化器='adam',loss='mean\u square\u error',metrics=['accurrent'])) 模型构建((169953)) model.summary() 完成=0 计数=0 折扣=0.99 最大事件数=1000 state_list=list() q_list=list() replay_mem=list() 重播大小=32 重播限制=2048 对于范围内的剧集(最多剧集): 虽然没有这样做: 计数+=1 e=1/((第10集)+1) screen=ImageGrab.grab(bbox=box) screen\u n=np.数组(图像操作灰度(屏幕))/255 q=模型预测(屏幕) 如果np.random.rand(1)

Python ValueError:layer sequential_5的输入0与layer::expected min_ndim=4不兼容,found ndim=2。收到完整形状:[无,953] 将pyautogui导入为pg 从PIL导入ImageGrab,ImageOps 将numpy作为np导入 导入tensorflow作为tf 从tensorflow进口keras 从时间上导入睡眠 从tensorflow.keras.layers导入* 进口cv2 随机输入 方框=(0259953428) def bigjump(): pg.keyDown(“空格”) 睡眠(0.1) pg.keyUp(“空格”) def smalljump(): pg.press(“空格”) def duck(): pg.keyDown(“向下”) 睡眠(0.4) pg.keyUp(“向下”) def noting(): 睡眠(0.1) screen=ImageGrab.grab(bbox=box) 屏幕=图像操作灰度(屏幕) 屏幕\u n=np.数组(屏幕)/255 model=keras.models.Sequential() add(Conv2D(32,(8,8),步幅=(2,2))) model.add(MaxPoolig2D(池大小=(2,2))) 添加(激活('relu')) add(Conv2D(64,(4,4),步幅=(2,2),填充='same')) model.add(MaxPoolig2D(池大小=(2,2))) 添加(激活('relu')) add(Conv2D(64,(3,3),步幅=(1,1),填充='same')) model.add(MaxPoolig2D(池大小=(2,2))) 添加(激活('relu')) model.add(展平()) 添加(密集(512,activation='relu')) 模型.添加(密度(4)) compile(优化器='adam',loss='mean\u square\u error',metrics=['accurrent'])) 模型构建((169953)) model.summary() 完成=0 计数=0 折扣=0.99 最大事件数=1000 state_list=list() q_list=list() replay_mem=list() 重播大小=32 重播限制=2048 对于范围内的剧集(最多剧集): 虽然没有这样做: 计数+=1 e=1/((第10集)+1) screen=ImageGrab.grab(bbox=box) screen\u n=np.数组(图像操作灰度(屏幕))/255 q=模型预测(屏幕) 如果np.random.rand(1),python,tensorflow,keras,deep-learning,q-learning,Python,Tensorflow,Keras,Deep Learning,Q Learning,我认为这与灰度缩放有关,请您分享模型输入层的尺寸 可能,该模型是在3通道数据上训练的,这就是为什么它要求4个DIM(批次大小,ch1,ch2,ch3),而您的灰度图像是单通道,因此2个DIM(批次大小,ch1)输入大小是(169953)。您能告诉我模型的输出吗。摘要()发生这种情况:(ValueError:此模型尚未生成。首先通过调用Build()或调用带有一些数据的fit()来生成模型,或者在第一层中指定input\u shape参数用于自动生成。尝试向模型添加输入层,并在其中指定维度。如果可

我认为这与灰度缩放有关,请您分享模型输入层的尺寸


可能,该模型是在3通道数据上训练的,这就是为什么它要求4个DIM(批次大小,ch1,ch2,ch3),而您的灰度图像是单通道,因此2个DIM(批次大小,ch1)

输入大小是(169953)。您能告诉我
模型的输出吗。摘要()
发生这种情况:(ValueError:此模型尚未生成。首先通过调用
Build()
或调用带有一些数据的
fit()
来生成模型,或者在第一层中指定
input\u shape
参数用于自动生成。尝试向模型添加输入层,并在其中指定维度。如果可能,请与我分享整个代码的要点,我认为您可能缺少一些内容。我用整个代码更改了我的帖子。
import pyautogui as pg
from PIL import ImageGrab, ImageOps
import numpy as np
import tensorflow as tf
from tensorflow import keras
from time import sleep
from tensorflow.keras.layers import *
import cv2
import random

box = (0,259,953,428)

def bigjump():
    pg.keyDown('space')
    sleep(0.1)
    pg.keyUp('space')
    
def smalljump():
    pg.press('space')
    
def duck():
    pg.keyDown('down')
    sleep(0.4)
    pg.keyUp('down')
    
def noting():
    sleep(0.1)

screen = ImageGrab.grab(bbox = box)
screen = ImageOps.grayscale(screen)

screen_n = np.array(screen)/255

model = keras.models.Sequential()

model.add(Conv2D(32,(8,8),strides=(2,2)))
model.add(MaxPooling2D(pool_size = (2,2)))
model.add(Activation('relu'))
model.add(Conv2D(64,(4,4),strides=(2,2),padding= 'same'))
model.add(MaxPooling2D(pool_size = (2,2)))
model.add(Activation('relu'))
model.add(Conv2D(64,(3,3),strides=(1,1),padding= 'same'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Activation('relu'))
model.add(Flatten())
model.add(Dense(512,activation='relu'))
model.add(Dense(4))

model.compile(optimizer = 'adam',loss = 'mean_square_error',metrics =['accurate']) 

model.build((169,953))
model.summary()

done = 0
count = 0

discount = 0.99

max_episodes = 1000

state_list = list()
q_list = list()

replay_mem = list()

replay_size = 32
replay_limit = 2048

for episode in range(max_episodes):
    while not done:
        
        count += 1
        e = 1 / ((episode / 10) + 1)
    
        screen = ImageGrab.grab(bbox = box)
        screen_n = np.array(ImageOps.grayscale(screen))/255
        
        q = model.predict(screen_n)
    
        if np.random.rand(1)<e:
            action = random.randint(1,4)
        else:
            action = np.argmax(q)

        if action == 1:
            bigjump()
        elif action == 2:
            smalljump()
        elif action == 3:
            duck()
        elif action == 4:
            noting()
        
        screen_next = ImageGrab.grab(bbox = box)
        screen_next_n = np.array(ImageOps.grayscale(screen_next))/255
        
        if screen_next_n == screen_n:
            done = 1
            reward = -100
        else:
            reward = 1
            
        replay_mem.append([screen_n,screen_next_n,action,done,reward])
        
        if len(replay_mem)<replay_size:
            replay_size = len(replay_mem)
        
        for sample in random.sample(replay_mem,replay_size):
            screen_n,screen_next_n,action_dont,reward = sample
            if done:
                q[0,action] = -100
            else:
                q_next = model.predict(screen_next_n)
                q[0,action] = reward + discount*argmax(q_next)
            
            state_list.append(screen_n)
            q_list.append(q)
        hist = model.fit(state_list,q_list,epochs = 5,verbose =0)