Saya mencoba menerapkan model DQL pada satu permainan gym openAI. Tapi itu memberi saya kesalahan berikut.
TypeError: len tidak didefinisikan dengan baik untuk Tensor simbolik. (aktivasi_3 / Identitas: 0) Silakan hubungi
x.shape
daripadalen(x)
untuk informasi bentuk.
Menciptakan lingkungan gym:
ENV_NAME = 'CartPole-v0'
env = gym.make(ENV_NAME)
np.random.seed(123)
env.seed(123)
nb_actions = env.action_space.n
Model saya terlihat seperti ini:
model = Sequential()
model.add(Flatten(input_shape=(1,) + env.observation_space.shape))
model.add(Dense(16))
model.add(Activation('relu'))
model.add(Dense(nb_actions))
model.add(Activation('linear'))
print(model.summary())
Menyesuaikan model itu ke model DQN dari keral-rl sebagai berikut:
policy = EpsGreedyQPolicy()
memory = SequentialMemory(limit=50000, window_length=1)
dqn = DQNAgent(model=model, nb_actions=nb_actions, memory=memory, nb_steps_warmup=10, target_model_update=0.001, policy=policy)
dqn.compile(Adam(lr=1e-3), metrics=['mse', 'mae'])
dqn.fit(env, nb_steps=5000, visualize=False, verbose=3)
Kesalahan berasal dari baris ini:
dqn = DQNAgent(model=model, nb_actions=nb_actions, memory=memory, nb_steps_warmup=10, target_model_update=0.001, policy=policy)
Saya menggunakan keras-rl == 0.4.2 dan tensorflow == 2.1.0. Berdasarkan jawaban lain, saya juga mencoba tensorflow == 2.0.0-beta0 tetapi tidak menyelesaikan kesalahan.
Bisakah seseorang tolong jelaskan kepada saya mengapa saya menghadapi kesalahan ini? dan bagaimana cara mengatasinya?
Terima kasih.
python
tensorflow
keras
reinforcement-learning
keras-rl
vivekpadia70
sumber
sumber
env
? Dimanalen
tempatnya? Atau itu bagian dari panggilan balik?env
adalah lingkungan permainan olahraga untuk melatih model RL.len
sedang berlangsung di suatu tempat di perpustakaan TensorFlow. Saya telah memperbarui pertanyaan untuk lebih jelasnya.Jawaban:
Alasan jeda ini adalah karena,
tf.Tensor
TF 2.0.0 (dan TF 1.15) memiliki__len__
kelebihan beban dan memunculkan pengecualian . Tetapi TF 1.14 misalnya tidak memiliki__len__
atribut.Karenanya, apa pun TF 1.15+ (inklusif) rusak
keras-rl
(khusus di sini ), yang memberi Anda kesalahan di atas. Jadi Anda punya dua opsi,__len__
overloading di sumber TensorFlow ( tidak disarankan karena ini dapat merusak hal lain)sumber