簡體   English   中英

ValueError:檢查輸入時出錯:預期 flatten_input 具有形狀 (1, 4) 但得到形狀為 (1, 2) 的數組

[英]ValueError: Error when checking input: expected flatten_input to have shape (1, 4) but got array with shape (1, 2)

我是 RL 的新手,我真的不明白為什么我會收到這個錯誤。

import random
import numpy as np
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.optimizers import Adam
from rl.agents import DQNAgent
from rl.policy import BoltzmannQPolicy
from rl.memory import SequentialMemory



def build_model(states, actions):
    model = Sequential()
    model.add(Flatten(input_shape=(1,states)))
    model.add(Dense(24, activation='relu'))
    model.add(Dense(24, activation='relu'))
    model.add(Dense(actions, activation='linear'))
    return model

def build_agent(model, actions):
    policy = BoltzmannQPolicy()
    memory = SequentialMemory(limit=50000, window_length=1)
    dqn = DQNAgent(model=model, memory=memory, policy=policy, 
                  nb_actions=actions, nb_steps_warmup=10, target_model_update=1e-2)
    return dqn

def main():

    env = gym.make('CartPole-v1')
    states = env.observation_space.shape[0]
    actions = env.action_space.n
    #print(env.reset())
    #print(env.action_space.sample())
    print(env.observation())

    model = build_model(states, actions)


    dqn = build_agent(model, actions)
    dqn.compile(Adam(learning_rate=1e-3),metrics=['mae'])
    dqn.fit(env, nb_steps=50000, visualize=False, verbose=1)


main()

我不明白為什么它會得到一個形狀為 (1,2) 的數組。 我已經查看了一些人的類似問題,但我無法將其應用於我的問題。 它開始訓練,但立即失敗,執行了 0 步。

提前致謝!

keras-rl2 庫自 2021 年起停用。請在此處查看他們的 github 存儲庫: https ://github.com/taylormcnally/keras-rl2 可以看到它已存檔,不再更新。

他們還刪除了在線文檔。

Gym 建議不要使用 keras-rl2,而是使用其他庫,例如https://github.com/google/dopamine

雖然它已經停產,但我通過編輯 core.py 來修復它我改變了

action = self.forward(observation)

            if first_time:
                action = self.forward(observation[0])
                first_time = False
            else:
                action = self.forward(observation)

現在好了:)確保你在方法的頂部初始化了 first_time=True

我正在處理同樣的問題並面臨完全相同的問題。 安裝包 'rl-agents==0.1.1' 為我解決了這個問題。 謝謝

這是我的這個項目的回購鏈接https://github.com/tahmiid/DQNCartPoleAI

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM