版權所有 2023 TF-Agents 作者。
開始使用
![]() |
![]() |
![]() |
![]() |
設定
pip install tf-agents[reverb]
pip install tf-keras
import os
# Keep using keras-2 (tf-keras) rather than keras-3 (keras).
os.environ['TF_USE_LEGACY_KERAS'] = '1'
匯入
2023-12-22 12:12:26.469831: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered 2023-12-22 12:12:26.469877: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:607] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered 2023-12-22 12:12:26.471318: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1515] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
簡介
在本教學課程中,我們會引導您瞭解實作為 TF-Agents Bandits 程式庫一部分的排名演算法。在排名問題中,代理程式在每次迭代時都會收到一組項目,並負責將部分或所有項目排名到清單中。然後,此排名決策會收到某種形式的回饋 (例如,使用者是否點擊一或多個選取的項目)。代理程式的目標是最佳化某些指標/獎勵,目標是隨著時間的推移做出更好的決策。
先決條件
TF-Agents 中的排名演算法屬於一種特殊類型的 Bandit 代理程式,其運作於「per-arm」bandit 問題。因此,為了能夠從本教學課程中獲得最大益處,讀者應熟悉 bandit 和 per-arm bandit 教學課程。
排名問題及其變體
在本教學課程中,我們將使用向使用者展示待售商品的範例。在每次迭代中,我們會收到一組項目,以及可能描述應顯示多少項目的數字。我們假設手邊的項目數量始終大於或等於放置它們的插槽數量。我們需要填滿顯示器中的插槽,以最大化使用者與一或多個顯示項目互動的可能性。使用者和項目都由特徵描述。
如果我們設法將使用者喜歡的項目放在顯示器上,則使用者/項目互動的可能性會增加。因此,瞭解使用者項目配對方式是個好主意。但是,我們如何知道使用者是否喜歡某個項目?為此,我們介紹回饋類型。
回饋類型
與回饋訊號 (獎勵) 直接與單一選取項目相關聯的 bandit 問題相反,在排名中,我們需要考慮回饋如何轉化為顯示項目的「優劣」。換句話說,我們需要為所有或部分顯示項目指派分數。在我們的程式庫中,我們提供兩種不同的回饋類型:向量回饋和階梯式回饋。
向量回饋
在向量回饋類型中,我們假設代理程式接收輸出排名中每個項目的純量分數。這些純量會以與輸出排名相同的順序放在向量中。因此,回饋是與排名中元素數量相同大小的向量。
這種回饋類型非常直接,因為我們不需要擔心將回饋訊號轉換為分數。另一方面,項目評分的責任落在設計者 (又名您) 身上:系統設計者有責任決定根據項目、其位置以及使用者是否與其互動來給予什麼分數。
階梯式回饋
在階梯式回饋類型中 (由 Craswell 等人,2008 年創造的術語),我們假設使用者以循序方式查看顯示的項目,從頂部插槽開始。一旦使用者找到值得點擊的項目,他們就會點擊,並且永遠不會返回目前的排名清單。他們甚至不會查看點擊項目下方的項目。不點擊任何項目也是一種可能性,當顯示的項目中沒有一個值得點擊時,就會發生這種情況。在這種情況下,使用者確實會查看所有項目。
回饋訊號由兩個元素組成:選取元素的索引和點擊的值。然後,代理程式的任務是將此資訊轉換為分數。在我們在 bandit 程式庫中的實作中,我們實作了慣例,即已查看但未點擊的項目會收到一些低分數 (通常為 0 或 -1),點擊的項目會收到點擊值,而超出點擊項目的項目則會被代理程式忽略。
多樣性和探索
為了最大化使用者點擊項目的機會,僅僅選擇得分最高的項目並將其放在排名的較高位置是不夠的。對於有許多不同興趣的使用者來說,他們可能對運動最感興趣,但他們也喜歡藝術和旅行。給所有運動項目最高的估計分數,並在最高的插槽中顯示所有運動項目可能不是最佳選擇。使用者可能正處於想要藝術或旅行的心情。因此,顯示高分興趣的組合是個好主意。重要的是不僅要最大化顯示項目的分數,還要確保它們形成多樣化的集合。
與其他資訊有限的學習問題 (如 bandit) 一樣,重要的是要記住,我們的決策不僅會影響即時獎勵,還會影響訓練資料和未來獎勵。如果我們始終僅根據項目目前的估計分數來顯示項目,我們可能會錯過我們尚未充分探索的高分項目,因此我們不知道它們有多好。也就是說,我們需要將探索納入我們的決策制定流程。
我們的程式庫中解決了上述所有概念和考量因素。在本教學課程中,我們將逐步引導您瞭解詳細資訊。
模擬使用者:我們的測試環境
讓我們深入瞭解我們的程式碼庫!
首先,我們定義環境,該類別負責隨機產生使用者和項目特徵,並在決策後給予回饋。
feedback_model = ranking_environment.FeedbackModel.CASCADING
我們還需要一個環境模型來決定何時不點擊。在我們的程式庫中,我們有兩種方法:基於距離和虛擬動作。
- 在基於距離的方法中,如果使用者特徵與任何項目特徵不夠接近,則使用者不會點擊。
- 在虛擬動作模型中,我們以單位向量項目特徵的形式設定額外的虛擬動作。如果使用者選擇其中一個虛擬動作,則會導致不點擊。
我們幾乎準備好定義排名環境,只需做一些準備工作:我們定義全域 (使用者) 和項目特徵的取樣函數。這些特徵將由環境用於模擬使用者行為:計算全域和項目特徵的加權內積,並且使用者點擊的機率與內積值成正比。內積的權重由下方 scores_weight_matrix
定義。
global_dim = 9
item_dim = 11
num_items = 50
num_slots = 3
distance_threshold = 5.0
batch_size = 128
def global_sampling_fn():
return np.random.randint(-1, 1, [global_dim]).astype(np.float32)
def item_sampling_fn():
return np.random.randint(-2, 3, [item_dim]).astype(np.float32)
# Inner product with excess dimensions ignored.
scores_weight_matrix = np.eye(11, 9, dtype=np.float32)
env = ranking_environment.RankingPyEnvironment(
global_sampling_fn,
item_sampling_fn,
num_items=num_items,
num_slots=num_slots,
scores_weight_matrix=scores_weight_matrix,
feedback_model=feedback_model,
click_model=click_model,
distance_threshold=distance_threshold,
batch_size=batch_size)
# Convert the python environment to tf environment.
environment = tf_py_environment.TFPyEnvironment(env)
現在,讓我們定義幾個不同的代理程式來處理上述環境!所有代理程式都訓練一個網路,該網路估計項目/使用者配對的分數。不同之處在於政策,也就是如何使用訓練的網路來做出排名決策。實作的政策範圍從僅基於分數的堆疊排名,到考慮多樣性和探索,並能夠調整這些方面的混合。
定義網路和訓練參數
依分數確定性地堆疊排名
依分數循序取樣
循序取樣並考慮多樣性
選擇所需的代理程式。
在我們可以開始訓練迴圈之前,還有一件事我們需要處理,即關於訓練資料。
在決策時呈現給政策的 arm 特徵包含政策可以從中選擇的所有項目。但是,在訓練時,我們需要選取項目的特徵,並且為了方便起見,需要按照決策輸出的順序排列。為此,使用以下函數 (從 此處複製以求清晰)。
def order_items_from_action_fn(orig_trajectory):
"""Puts the features of the selected items in the recommendation order.
This function is used to make sure that at training the item observation is
filled with features of items selected by the policy, in the order of the
selection. Features of unselected items are discarded.
Args:
orig_trajectory: The trajectory as output by the policy
Returns:
The modified trajectory that contains slotted item features.
"""
item_obs = orig_trajectory.observation[
bandit_spec_utils.PER_ARM_FEATURE_KEY]
action = orig_trajectory.action
if isinstance(
orig_trajectory.observation[bandit_spec_utils.PER_ARM_FEATURE_KEY],
tensor_spec.TensorSpec):
dtype = orig_trajectory.observation[
bandit_spec_utils.PER_ARM_FEATURE_KEY].dtype
shape = [
num_slots, orig_trajectory.observation[
bandit_spec_utils.PER_ARM_FEATURE_KEY].shape[-1]
]
new_observation = {
bandit_spec_utils.GLOBAL_FEATURE_KEY:
orig_trajectory.observation[bandit_spec_utils.GLOBAL_FEATURE_KEY],
bandit_spec_utils.PER_ARM_FEATURE_KEY:
tensor_spec.TensorSpec(dtype=dtype, shape=shape)
}
else:
slotted_items = tf.gather(item_obs, action, batch_dims=1)
new_observation = {
bandit_spec_utils.GLOBAL_FEATURE_KEY:
orig_trajectory.observation[bandit_spec_utils.GLOBAL_FEATURE_KEY],
bandit_spec_utils.PER_ARM_FEATURE_KEY:
slotted_items
}
return trajectory.Trajectory(
step_type=orig_trajectory.step_type,
observation=new_observation,
action=(),
policy_info=(),
next_step_type=orig_trajectory.next_step_type,
reward=orig_trajectory.reward,
discount=orig_trajectory.discount)
定義在定義的環境中執行代理程式的參數
與 bandit 教學課程一樣,我們定義重播緩衝區,該緩衝區將向代理程式提供範例以進行訓練。然後,我們使用驅動程式將所有內容放在一起:環境提供特徵,政策選擇排名,並收集範例以進行訓練。
replay_buffer = bandit_replay_buffer.BanditReplayBuffer(
data_spec=order_items_from_action_fn(agent.policy.trajectory_spec),
batch_size=batch_size,
max_length=steps_per_loop)
if feedback_model == ranking_environment.FeedbackModel.SCORE_VECTOR:
reward_metric = tf_metrics.AverageReturnMetric(
batch_size=environment.batch_size,
buffer_size=200)
else:
reward_metric = tf_metrics.AverageReturnMultiMetric(
reward_spec=environment.reward_spec(),
batch_size=environment.batch_size,
buffer_size=200)
add_batch_fn = lambda data: replay_buffer.add_batch(
order_items_from_action_fn(data))
observers = [add_batch_fn, reward_metric]
driver = dynamic_step_driver.DynamicStepDriver(
env=environment,
policy=agent.collect_policy,
num_steps=steps_per_loop * batch_size,
observers=observers)
reward_values = []
for _ in range(num_iterations):
driver.run()
loss_info = agent.train(replay_buffer.gather_all())
replay_buffer.clear()
if feedback_model == ranking_environment.FeedbackModel.SCORE_VECTOR:
reward_values.append(reward_metric.result())
else:
reward_values.append(reward_metric.result())
WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:tensorflow:From /tmpfs/tmp/ipykernel_9144/2279345075.py:31: ReplayBuffer.gather_all (from tf_agents.replay_buffers.replay_buffer) is deprecated and will be removed in a future version. Instructions for updating: Use `as_dataset(..., single_deterministic_pass=True)` instead. WARNING:tensorflow:From /tmpfs/tmp/ipykernel_9144/2279345075.py:31: ReplayBuffer.gather_all (from tf_agents.replay_buffers.replay_buffer) is deprecated and will be removed in a future version. Instructions for updating: Use `as_dataset(..., single_deterministic_pass=True)` instead. WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ``` WARNING:root: Distribution subclass PenalizedPlackettLuce inherits `_parameter_properties from its parent (PlackettLuce) while also redefining `__init__`. The inherited annotations cover the following parameters: dict_keys(['scores']). It is likely that these do not match the subclass parameters. This may lead to errors when computing batch shapes, slicing into batch dimensions, calling `.copy()`, flattening the distribution as a CompositeTensor (e.g., when it is passed or returned from a `tf.function`), and possibly other cases. The recommended pattern for distribution subclasses is to define a new `_parameter_properties` method with the subclass parameters, and to store the corresponding parameter values as `self._parameters` in `__init__`, after calling the superclass constructor: ``` class MySubclass(tfd.SomeDistribution): def __init__(self, param_a, param_b): parameters = dict(locals()) # ... do subclass initialization ... super(MySubclass, self).__init__(**base_class_params) # Ensure that the subclass (not base class) parameters are stored. self._parameters = parameters def _parameter_properties(self, dtype, num_classes=None): return dict( # Annotations may optionally specify properties, such as `event_ndims`, # `default_constraining_bijector_fn`, `specifies_shape`, etc.; see # the `ParameterProperties` documentation for details. param_a=tfp.util.ParameterProperties(), param_b=tfp.util.ParameterProperties()) ```
讓我們繪製獎勵!
if feedback_model == ranking_environment.FeedbackModel.SCORE_VECTOR:
reward = reward_values
else:
reward = [r["chosen_value"] for r in reward_values]
plt.plot(reward)
plt.ylabel('Average Return')
plt.xlabel('Number of Iterations')
Text(0.5, 0, 'Number of Iterations')
下一步?
本教學課程有許多可調整的參數,包括要使用的政策/代理程式、環境的某些屬性,甚至回饋模型。隨時試驗這些參數!
在 tf_agents/bandits/agents/examples/v2/train_eval_ranking.py
中還有一個可立即執行的排名範例