deribit
This commit is contained in:
@ -395,16 +395,24 @@ class EnhancedCNN(nn.Module):
|
||||
# Validate input dimensions to prevent zero-element tensor issues
|
||||
if x.numel() == 0:
|
||||
logger.error(f"Forward pass received empty tensor with shape {x.shape}")
|
||||
# Return default output to prevent crash
|
||||
default_output = torch.zeros(batch_size, self.n_actions, device=x.device)
|
||||
return default_output
|
||||
# Return default outputs for all 5 expected values to prevent crash
|
||||
default_q_values = torch.zeros(batch_size, self.n_actions, device=x.device)
|
||||
default_extrema = torch.zeros(batch_size, 3, device=x.device) # bottom/top/neither
|
||||
default_price_pred = torch.zeros(batch_size, 1, device=x.device)
|
||||
default_features = torch.zeros(batch_size, 1024, device=x.device)
|
||||
default_advanced = torch.zeros(batch_size, 1, device=x.device)
|
||||
return default_q_values, default_extrema, default_price_pred, default_features, default_advanced
|
||||
|
||||
# Check for zero feature dimensions
|
||||
if len(x.shape) > 1 and any(dim == 0 for dim in x.shape[1:]):
|
||||
logger.error(f"Forward pass received tensor with zero feature dimensions: {x.shape}")
|
||||
# Return default output to prevent crash
|
||||
default_output = torch.zeros(batch_size, self.n_actions, device=x.device)
|
||||
return default_output
|
||||
# Return default outputs for all 5 expected values to prevent crash
|
||||
default_q_values = torch.zeros(batch_size, self.n_actions, device=x.device)
|
||||
default_extrema = torch.zeros(batch_size, 3, device=x.device) # bottom/top/neither
|
||||
default_price_pred = torch.zeros(batch_size, 1, device=x.device)
|
||||
default_features = torch.zeros(batch_size, 1024, device=x.device)
|
||||
default_advanced = torch.zeros(batch_size, 1, device=x.device)
|
||||
return default_q_values, default_extrema, default_price_pred, default_features, default_advanced
|
||||
|
||||
# Process different input shapes
|
||||
if len(x.shape) > 2:
|
||||
@ -496,23 +504,15 @@ class EnhancedCNN(nn.Module):
|
||||
market_regime_pred = self.market_regime_head(features_refined)
|
||||
risk_pred = self.risk_head(features_refined)
|
||||
|
||||
# Package all price predictions
|
||||
price_predictions = {
|
||||
'immediate': price_immediate,
|
||||
'midterm': price_midterm,
|
||||
'longterm': price_longterm,
|
||||
'values': price_values
|
||||
}
|
||||
# Package all price predictions into a single tensor (use immediate as primary)
|
||||
# For compatibility with DQN agent, we return price_immediate as the price prediction tensor
|
||||
price_pred_tensor = price_immediate
|
||||
|
||||
# Package additional predictions for enhanced decision making
|
||||
advanced_predictions = {
|
||||
'volatility': volatility_pred,
|
||||
'support_resistance': support_resistance_pred,
|
||||
'market_regime': market_regime_pred,
|
||||
'risk_assessment': risk_pred
|
||||
}
|
||||
# Package additional predictions into a single tensor (use volatility as primary)
|
||||
# For compatibility with DQN agent, we return volatility_pred as the advanced prediction tensor
|
||||
advanced_pred_tensor = volatility_pred
|
||||
|
||||
return q_values, extrema_pred, price_predictions, features_refined, advanced_predictions
|
||||
return q_values, extrema_pred, price_pred_tensor, features_refined, advanced_pred_tensor
|
||||
|
||||
def act(self, state, explore=True) -> Tuple[int, float, List[float]]:
|
||||
"""Enhanced action selection with ultra massive model predictions"""
|
||||
|
Reference in New Issue
Block a user