openAI's doc के अलावा, मुझे और अधिक विस्तृत दस्तावेज़ीकरण नहीं मिला।
मुझे बनाने का सही तरीका जानने की जरूरत है:
एक क्रिया स्थान जिसमें
1..n
संभावित क्रियाएं हैं। (वर्तमान में असतत क्रिया स्थान का उपयोग कर रहे हैं)एक ऑब्जर्वेशन स्पेस जिसमें
2^n
स्टेट्स हैं - हर संभव कार्रवाई के लिए एक स्टेट जो कि गई है। मुझे एक्शन वेक्टर का एक-गर्म प्रतिनिधित्व चाहिए -action was already taken
के लिए 1,action still hadn't been taken
के लिए 0
मैं इसे openAI के जिम के साथ कैसे करूँ?
धन्यवाद
2 जवाब
लेखन के समय gym
पैकेज द्वारा प्रदान किए गए gym.Spaces
में से कोई भी एक गर्म एन्कोडिंग प्रतिनिधित्व को प्रतिबिंबित करने के लिए उपयोग नहीं किया जा सकता है।
सौभाग्य से हमारे लिए, हम gym.Spaces
का चाइल्ड क्लास बनाकर अपने स्पेस को परिभाषित कर सकते हैं।
मैंने ऐसी कक्षा बनाई है, जिसकी आपको आवश्यकता हो सकती है:
import gym
import numpy as np
class OneHotEncoding(gym.Space):
"""
{0,...,1,...,0}
Example usage:
self.observation_space = OneHotEncoding(size=4)
"""
def __init__(self, size=None):
assert isinstance(size, int) and size > 0
self.size = size
gym.Space.__init__(self, (), np.int64)
def sample(self):
one_hot_vector = np.zeros(self.size)
one_hot_vector[np.random.randint(self.size)] = 1
return one_hot_vector
def contains(self, x):
if isinstance(x, (list, tuple, np.ndarray)):
number_of_zeros = list(x).contains(0)
number_of_ones = list(x).contains(1)
return (number_of_zeros == (self.size - 1)) and (number_of_ones == 1)
else:
return False
def __repr__(self):
return "OneHotEncoding(%d)" % self.size
def __eq__(self, other):
return self.size == other.size
आप इसे इस प्रकार उपयोग कर सकते हैं:
-> space = OneHotEncoding(size=3)
-> space.sample()
array([0., 1., 0.])
-> space.sample()
array([1., 0., 0.])
-> space.sample()
array([0., 0., 1.])
आशा है कि मैं मदद कर सकता हूँ
आपके द्वारा मांगा गया "मल्टी वन हॉट" स्पेस पहले से ही लागू है
https://github.com/openai/gym/blob/master/gym/spaces/multi_binary.py
import gym
# create a MultiBinary Space
# by passing n=10, each sample will contain 10 elements
mb = gym.spaces.MultiBinary(n=10)
mb.sample()
# array([1, 0, 1, 0, 0, 0, 0, 0, 0, 1], dtype=int8)
यदि आप यह सुनिश्चित करने के लिए अपना स्वयं का कार्यान्वयन करना चाहते हैं कि sample
को कॉल करते समय सकारात्मक तत्वों की संख्या x से अधिक न हो, तो आप यादृच्छिक रूप से x सूचकांक चुन सकते हैं। n विकल्प और फिर उन सूचकांकों को सभी 0
की एक सरणी में फ़्लिप करें और फिर उसे वापस कर दें।
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।