প্রকারের ত্রুটি: প্রতীকী টেনসারগুলির জন্য লেন ভালভাবে সংজ্ঞায়িত হয় না। (অ্যাক্টিভেশন 14 / পরিচয়: 0) আকৃতির তথ্যের জন্য দয়া করে `লেন (এক্স)` এর পরিবর্তে `x. shape` কল করুন


10

আমি ওপেনএআই জিমের একটি গেমের জন্য একটি ডিকিউএল মডেল বাস্তবায়নের চেষ্টা করছি। কিন্তু এটি আমাকে নিম্নলিখিত ত্রুটি দিচ্ছে।

প্রকারের ত্রুটি: প্রতীকী টেনসারগুলির জন্য লেন ভালভাবে সংজ্ঞায়িত হয় না। (অ্যাক্টিভেশন 14 / পরিচয়: 0) আকৃতির তথ্যের x.shapeচেয়ে কল len(x)করুন।

একটি জিম পরিবেশ তৈরি করা:

ENV_NAME = 'CartPole-v0'

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

আমার মডেলটি এমন দেখাচ্ছে:

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

নিম্নলিখিত হিসাবে কেরাল-আরএল থেকে ডিকিউএন মডেলটিতে সেই মডেলটিকে ফিট করা:

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)

ত্রুটিটি এই লাইন থেকে:

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

আমি কেরাস-আরএল == 0.4.2 এবং টেনসরফ্লো == 2.1.0 ব্যবহার করছি। অন্যান্য উত্তরের উপর ভিত্তি করে, আমি টেনসরফ্লো == 2.0.0-বিটা0 চেষ্টা করেও এটি ত্রুটিটি সমাধান করে না।

কেউ দয়া করে আমাকে ব্যাখ্যা করতে পারেন যে আমি কেন এই ত্রুটির মুখোমুখি? এবং কিভাবে এটি সমাধান?

ধন্যবাদ.


2
কী env? কোথায় হচ্ছে len? নাকি এটি কলব্যাকের অংশ?
সেলিউস স্টিংহর

envআরএল মডেল প্রশিক্ষণের জন্য একটি জিম গেমের পরিবেশ। lenটেনসরফ্লো লাইব্রেরিতে কোথাও জায়গা নিচ্ছে। আমি আরও তথ্যের জন্য প্রশ্ন আপডেট করেছি।
বিবেকপাদিয়া 70

উত্তর:


3

এই ব্রেকটি হওয়ার কারণটি হ'ল, tf.Tensorটিএফ ২.০.০ (এবং টিএফ ১.১৫) __len__অতিরিক্ত চাপ পেয়েছে এবং একটি ব্যতিক্রম উত্থাপন করে । তবে উদাহরণস্বরূপ টিএফ 1.14 এর __len__বৈশিষ্ট্যটি নেই।

অতএব, টিএফ 1.15+ (সমেত) যে কোনও কিছু বিরতি দেয় keras-rl(বিশেষত এখানে ), যা আপনাকে উপরের ত্রুটিটি দেয়। সুতরাং আপনি দুটি বিকল্প পেয়েছি,

  • টিএফ 1.14 এ ডাউনগ্রেড (প্রস্তাবিত)
  • __len__টেনসরফ্লো উত্সে ওভারলোডিং মুছুন ( এটি প্রস্তাবিত নয় যেমন এটি অন্যান্য জিনিসগুলিকে ভেঙে ফেলতে পারে)

উত্তরের জন্য ধন্যবাদ. এটি টিএফ 1.14 এ পুরোপুরি কাজ করছে।
বিবেকপাদিয়া 70
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.