TypeError: len sembolik Tensörler için iyi tanımlanmamıştır. (activation_3 / Kimlik: 0) Şekil bilgileri için lütfen "len (x)" yerine "x.shape" çağrısını yapın


10

OpenAI spor salonunun bir oyununa bir DQL modeli uygulamaya çalışıyorum. Ama bana aşağıdaki hatayı veriyor.

TypeError: len sembolik Tensörler için iyi tanımlanmamıştır. (activation_3 / Kimlik: 0) Şekil bilgileri x.shapeyerine lütfen arayın len(x).

Spor salonu ortamı oluşturma:

ENV_NAME = 'CartPole-v0'

env = gym.make(ENV_NAME)
np.random.seed(123)
env.seed(123)
nb_actions = env.action_space.n

Modelim şöyle görünüyor:

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())

Bu modeli keral-rl'den DQN modeline aşağıdaki gibi takmak:

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)

Hata şu satırdan:

dqn = DQNAgent(model=model, nb_actions=nb_actions, memory=memory, nb_steps_warmup=10, target_model_update=0.001, policy=policy)

Keras-rl == 0.4.2 ve tensorflow == 2.1.0 kullanıyorum. Diğer cevaplara dayanarak, tensorflow == 2.0.0-beta0'ı da denedim ama hatayı çözmüyor.

Birisi bana neden bu hatayla karşılaştığımı açıklayabilir mi? ve nasıl çözülür?

Teşekkür ederim.


2
Nedir env? Olay nerede len? Yoksa geri aramaların bir parçası mı?
Celius Stingher

envRL modeli eğitimi için bir spor salonu oyun ortamıdır. lenTensorFlow kütüphanesinde bir yerde gerçekleşiyor. Daha fazla ayrıntı için soruyu güncelledim.
vivekpadia70

Yanıtlar:


3

Bunun kırılmasının nedeni, tf.TensorTF 2.0.0'ın (ve TF 1.15'in) __len__aşırı yüklenmesi ve bir istisna oluşturmasıdır . Ancak TF 1.14, bu özelliğe sahip değildir __len__.

Bu nedenle, TF 1.15+ (dahil) herhangi bir şey kırılır keras-rl(özellikle burada ), bu da size yukarıdaki hatayı verir. Yani iki seçeneğiniz var,

  • TF 1.14'e düşürme (önerilir)
  • __len__TensorFlow kaynağındaki aşırı yüklemeyi silin ( bu, başka şeyleri kırabileceği için önerilmez )

Cevap için teşekkürler. TF 1.14 üzerinde mükemmel çalışıyor.
vivekpadia70
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.