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.