pyerualjetwork 4.0.5__py3-none-any.whl → 4.0.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pyerualjetwork/__init__.py +1 -1
- pyerualjetwork/activation_functions.py +122 -145
- pyerualjetwork/activation_functions_cuda.py +193 -214
- pyerualjetwork/data_operations.py +3 -0
- pyerualjetwork/data_operations_cuda.py +7 -9
- pyerualjetwork/plan.py +9 -7
- pyerualjetwork/plan_cuda.py +7 -9
- {pyerualjetwork-4.0.5.dist-info → pyerualjetwork-4.0.6.dist-info}/METADATA +2 -2
- {pyerualjetwork-4.0.5.dist-info → pyerualjetwork-4.0.6.dist-info}/RECORD +11 -11
- {pyerualjetwork-4.0.5.dist-info → pyerualjetwork-4.0.6.dist-info}/WHEEL +0 -0
- {pyerualjetwork-4.0.5.dist-info → pyerualjetwork-4.0.6.dist-info}/top_level.txt +0 -0
    
        pyerualjetwork/__init__.py
    CHANGED
    
    | @@ -47,7 +47,7 @@ for package_name in package_names: | |
| 47 47 |  | 
| 48 48 | 
             
            print(f"PyerualJetwork is ready to use with {err} errors")
         | 
| 49 49 |  | 
| 50 | 
            -
            __version__ = "4.0. | 
| 50 | 
            +
            __version__ = "4.0.6"
         | 
| 51 51 | 
             
            __update__ = "* Note: CUDA modules need cupy. Enter this command in your terminal: 'pip install cupy-cuda12x' or your cuda version.\n* Changes: https://github.com/HCB06/PyerualJetwork/blob/main/CHANGES\n* PyerualJetwork document: https://github.com/HCB06/Anaplan/blob/main/Welcome_to_PyerualJetwork/PYERUALJETWORK_USER_MANUEL_AND_LEGAL_INFORMATION(EN).pdf\n* YouTube tutorials: https://www.youtube.com/@HasanCanBeydili"
         | 
| 52 52 |  | 
| 53 53 | 
             
            def print_version(__version__):
         | 
| @@ -1,5 +1,7 @@ | |
| 1 1 | 
             
            import numpy as np
         | 
| 2 2 | 
             
            from scipy.special import expit, softmax
         | 
| 3 | 
            +
            import warnings
         | 
| 4 | 
            +
             | 
| 3 5 |  | 
| 4 6 | 
             
            # ACTIVATION FUNCTIONS -----
         | 
| 5 7 |  | 
| @@ -216,152 +218,127 @@ def scaled_cubic(x, alpha=1.0): | |
| 216 218 | 
             
            def sine_offset(x, beta=0.0):
         | 
| 217 219 | 
             
                return np.sin(x + beta)
         | 
| 218 220 |  | 
| 219 | 
            -
            def apply_activation(Input, activation_list):
         | 
| 220 | 
            -
               """
         | 
| 221 | 
            -
                Applies a sequence of activation functions to the input.
         | 
| 222 | 
            -
                
         | 
| 223 | 
            -
                Args:
         | 
| 224 | 
            -
                    Input (numpy.ndarray): The input to apply activations to.
         | 
| 225 | 
            -
                    activation_list (list): A list of activation function names to apply.
         | 
| 226 | 
            -
                
         | 
| 227 | 
            -
                Returns:
         | 
| 228 | 
            -
                    numpy.ndarray: The input after all activations have been applied.
         | 
| 229 | 
            -
               """
         | 
| 230 | 
            -
                
         | 
| 231 | 
            -
               origin_input = np.copy(Input)
         | 
| 232 | 
            -
             | 
| 233 | 
            -
               for i in range(len(activation_list)):
         | 
| 234 | 
            -
             | 
| 235 | 
            -
                  if activation_list[i] == 'sigmoid':
         | 
| 236 | 
            -
                     Input += Sigmoid(origin_input)
         | 
| 237 | 
            -
             | 
| 238 | 
            -
                  elif activation_list[i] == 'swish':
         | 
| 239 | 
            -
                     Input += swish(origin_input)
         | 
| 240 | 
            -
             | 
| 241 | 
            -
                  elif activation_list[i] == 'mod_circular':
         | 
| 242 | 
            -
                     Input += modular_circular_activation(origin_input)
         | 
| 243 | 
            -
             | 
| 244 | 
            -
                  elif activation_list[i] == 'tanh_circular':
         | 
| 245 | 
            -
                     Input += tanh_circular_activation(origin_input)
         | 
| 246 | 
            -
             | 
| 247 | 
            -
                  elif activation_list[i] == 'leaky_relu':
         | 
| 248 | 
            -
                     Input += leaky_relu(origin_input)
         | 
| 249 | 
            -
             | 
| 250 | 
            -
                  elif activation_list[i] == 'relu':
         | 
| 251 | 
            -
                     Input += Relu(origin_input)
         | 
| 252 | 
            -
             | 
| 253 | 
            -
                  elif activation_list[i] == 'softplus':
         | 
| 254 | 
            -
                     Input += softplus(origin_input)
         | 
| 255 | 
            -
             | 
| 256 | 
            -
                  elif activation_list[i] == 'elu':
         | 
| 257 | 
            -
                     Input += elu(origin_input)
         | 
| 258 | 
            -
             | 
| 259 | 
            -
                  elif activation_list[i] == 'gelu':
         | 
| 260 | 
            -
                     Input += gelu(origin_input)
         | 
| 261 | 
            -
             | 
| 262 | 
            -
                  elif activation_list[i] == 'selu':
         | 
| 263 | 
            -
                     Input += selu(origin_input)
         | 
| 264 | 
            -
             | 
| 265 | 
            -
                  elif activation_list[i] == 'tanh':
         | 
| 266 | 
            -
                     Input += tanh(origin_input)
         | 
| 267 | 
            -
             | 
| 268 | 
            -
                  elif activation_list[i] == 'sinakt':
         | 
| 269 | 
            -
                     Input += sinakt(origin_input)
         | 
| 270 | 
            -
             | 
| 271 | 
            -
                  elif activation_list[i] == 'p_squared':
         | 
| 272 | 
            -
                     Input += p_squared(origin_input)
         | 
| 273 | 
            -
             | 
| 274 | 
            -
                  elif activation_list[i] == 'sglu':
         | 
| 275 | 
            -
                     Input += sglu(origin_input, alpha=1.0)
         | 
| 276 | 
            -
             | 
| 277 | 
            -
                  elif activation_list[i] == 'dlrelu':
         | 
| 278 | 
            -
                     Input += dlrelu(origin_input)
         | 
| 279 | 
            -
             | 
| 280 | 
            -
                  elif activation_list[i] == 'exsig':
         | 
| 281 | 
            -
                     Input += exsig(origin_input)
         | 
| 282 | 
            -
             | 
| 283 | 
            -
                  elif activation_list[i] == 'sin_plus':
         | 
| 284 | 
            -
                     Input += sin_plus(origin_input)
         | 
| 285 | 
            -
             | 
| 286 | 
            -
                  elif activation_list[i] == 'acos':
         | 
| 287 | 
            -
                     Input += acos(origin_input, alpha=1.0, beta=0.0)
         | 
| 288 | 
            -
             | 
| 289 | 
            -
                  elif activation_list[i] == 'gla':
         | 
| 290 | 
            -
                     Input += gla(origin_input, alpha=1.0, mu=0.0)
         | 
| 291 | 
            -
             | 
| 292 | 
            -
                  elif activation_list[i] == 'srelu':
         | 
| 293 | 
            -
                     Input += srelu(origin_input)
         | 
| 294 | 
            -
             | 
| 295 | 
            -
                  elif activation_list[i] == 'qelu':
         | 
| 296 | 
            -
                     Input += qelu(origin_input)
         | 
| 297 221 |  | 
| 298 | 
            -
                  elif activation_list[i] == 'isra':
         | 
| 299 | 
            -
                     Input += isra(origin_input)
         | 
| 300 222 |  | 
| 301 | 
            -
             | 
| 302 | 
            -
             | 
| 303 | 
            -
             | 
| 304 | 
            -
             | 
| 305 | 
            -
             | 
| 306 | 
            -
             | 
| 307 | 
            -
                  elif activation_list[i] == 'bent_identity':
         | 
| 308 | 
            -
                     Input += bent_identity(origin_input)
         | 
| 309 | 
            -
             | 
| 310 | 
            -
                  elif activation_list[i] == 'sech':
         | 
| 311 | 
            -
                     Input += sech(origin_input)
         | 
| 312 | 
            -
             | 
| 313 | 
            -
                  elif activation_list[i] == 'softsign':
         | 
| 314 | 
            -
                     Input += softsign(origin_input)
         | 
| 315 | 
            -
             | 
| 316 | 
            -
                  elif activation_list[i] == 'pwl':
         | 
| 317 | 
            -
                     Input += pwl(origin_input)
         | 
| 318 | 
            -
             | 
| 319 | 
            -
                  elif activation_list[i] == 'cubic':
         | 
| 320 | 
            -
                     Input += cubic(origin_input)
         | 
| 321 | 
            -
             | 
| 322 | 
            -
                  elif activation_list[i] == 'gaussian':
         | 
| 323 | 
            -
                     Input += gaussian(origin_input)
         | 
| 324 | 
            -
             | 
| 325 | 
            -
                  elif activation_list[i] == 'sine':
         | 
| 326 | 
            -
                     Input += sine(origin_input)
         | 
| 327 | 
            -
             | 
| 328 | 
            -
                  elif activation_list[i] == 'tanh_square':
         | 
| 329 | 
            -
                     Input += tanh_square(origin_input)
         | 
| 330 | 
            -
             | 
| 331 | 
            -
                  elif activation_list[i] == 'mod_sigmoid':
         | 
| 332 | 
            -
                     Input += mod_sigmoid(origin_input)
         | 
| 333 | 
            -
             | 
| 334 | 
            -
                  elif activation_list[i] == 'linear':
         | 
| 335 | 
            -
                     Input += origin_input
         | 
| 336 | 
            -
             | 
| 337 | 
            -
                  elif activation_list[i] == 'quartic':
         | 
| 338 | 
            -
                     Input += quartic(origin_input)
         | 
| 339 | 
            -
             | 
| 340 | 
            -
                  elif activation_list[i] == 'square_quartic':
         | 
| 341 | 
            -
                     Input += square_quartic(origin_input)
         | 
| 342 | 
            -
             | 
| 343 | 
            -
                  elif activation_list[i] == 'cubic_quadratic':
         | 
| 344 | 
            -
                     Input += cubic_quadratic(origin_input)
         | 
| 345 | 
            -
             | 
| 346 | 
            -
                  elif activation_list[i] == 'exp_cubic':
         | 
| 347 | 
            -
                     Input += exp_cubic(origin_input)
         | 
| 348 | 
            -
             | 
| 349 | 
            -
                  elif activation_list[i] == 'sine_square':
         | 
| 350 | 
            -
                     Input += sine_square(origin_input)
         | 
| 351 | 
            -
             | 
| 352 | 
            -
                  elif activation_list[i] == 'logarithmic':
         | 
| 353 | 
            -
                     Input += logarithmic(origin_input)
         | 
| 354 | 
            -
             | 
| 355 | 
            -
                  elif activation_list[i] == 'scaled_cubic':
         | 
| 356 | 
            -
                     Input += scaled_cubic(origin_input, 1.0)
         | 
| 357 | 
            -
             | 
| 358 | 
            -
                  elif activation_list[i] == 'sine_offset':
         | 
| 359 | 
            -
                     Input += sine_offset(origin_input, 1.0)
         | 
| 360 | 
            -
             | 
| 361 | 
            -
                  elif activation_list[i] == 'spiral':
         | 
| 362 | 
            -
                     Input += spiral_activation(origin_input)
         | 
| 223 | 
            +
            def safe_aggregate(current_sum, new_value):
         | 
| 224 | 
            +
                    try:
         | 
| 225 | 
            +
                        return current_sum + new_value
         | 
| 226 | 
            +
                    except OverflowError:
         | 
| 227 | 
            +
                        return np.array(current_sum) + np.array(new_value)
         | 
| 228 | 
            +
                
         | 
| 363 229 |  | 
| 364 | 
            -
             | 
| 365 | 
            -
             | 
| 230 | 
            +
            def apply_activation(Input, activation_list):
         | 
| 231 | 
            +
                """
         | 
| 232 | 
            +
                    Applies a sequence of activation functions to the input.
         | 
| 233 | 
            +
                    
         | 
| 234 | 
            +
                    Args:
         | 
| 235 | 
            +
                        Input (numpy.ndarray): The input to apply activations to.
         | 
| 236 | 
            +
                        activation_list (list): A list of activation function names to apply.
         | 
| 237 | 
            +
                    
         | 
| 238 | 
            +
                    Returns:
         | 
| 239 | 
            +
                        numpy.ndarray: The input after all activations have been applied.
         | 
| 240 | 
            +
                """
         | 
| 241 | 
            +
                
         | 
| 242 | 
            +
                origin_input = np.copy(Input)
         | 
| 243 | 
            +
             | 
| 244 | 
            +
                for i in range(len(activation_list)):
         | 
| 245 | 
            +
                    try:
         | 
| 246 | 
            +
                        if activation_list[i] == 'sigmoid':
         | 
| 247 | 
            +
                            Input = safe_aggregate(Input, Sigmoid(origin_input))
         | 
| 248 | 
            +
                        elif activation_list[i] == 'swish':
         | 
| 249 | 
            +
                            Input = safe_aggregate(Input, swish(origin_input))
         | 
| 250 | 
            +
                        elif activation_list[i] == 'mod_circular':
         | 
| 251 | 
            +
                            Input = safe_aggregate(Input, modular_circular_activation(origin_input))
         | 
| 252 | 
            +
                        elif activation_list[i] == 'tanh_circular':
         | 
| 253 | 
            +
                            Input = safe_aggregate(Input, tanh_circular_activation(origin_input))
         | 
| 254 | 
            +
                        elif activation_list[i] == 'leaky_relu':
         | 
| 255 | 
            +
                            Input = safe_aggregate(Input, leaky_relu(origin_input))
         | 
| 256 | 
            +
                        elif activation_list[i] == 'relu':
         | 
| 257 | 
            +
                            Input = safe_aggregate(Input, Relu(origin_input))
         | 
| 258 | 
            +
                        elif activation_list[i] == 'softplus':
         | 
| 259 | 
            +
                            Input = safe_aggregate(Input, softplus(origin_input))
         | 
| 260 | 
            +
                        elif activation_list[i] == 'elu':
         | 
| 261 | 
            +
                            Input = safe_aggregate(Input, elu(origin_input))
         | 
| 262 | 
            +
                        elif activation_list[i] == 'gelu':
         | 
| 263 | 
            +
                            Input = safe_aggregate(Input, gelu(origin_input))
         | 
| 264 | 
            +
                        elif activation_list[i] == 'selu':
         | 
| 265 | 
            +
                            Input = safe_aggregate(Input, selu(origin_input))
         | 
| 266 | 
            +
                        elif activation_list[i] == 'tanh':
         | 
| 267 | 
            +
                            Input = safe_aggregate(Input, tanh(origin_input))
         | 
| 268 | 
            +
                        elif activation_list[i] == 'sinakt':
         | 
| 269 | 
            +
                            Input = safe_aggregate(Input, sinakt(origin_input))
         | 
| 270 | 
            +
                        elif activation_list[i] == 'p_squared':
         | 
| 271 | 
            +
                            Input = safe_aggregate(Input, p_squared(origin_input))
         | 
| 272 | 
            +
                        elif activation_list[i] == 'sglu':
         | 
| 273 | 
            +
                            Input = safe_aggregate(Input, sglu(origin_input, alpha=1.0))
         | 
| 274 | 
            +
                        elif activation_list[i] == 'dlrelu':
         | 
| 275 | 
            +
                            Input = safe_aggregate(Input, dlrelu(origin_input))
         | 
| 276 | 
            +
                        elif activation_list[i] == 'exsig':
         | 
| 277 | 
            +
                            Input = safe_aggregate(Input, exsig(origin_input))
         | 
| 278 | 
            +
                        elif activation_list[i] == 'sin_plus':
         | 
| 279 | 
            +
                            Input = safe_aggregate(Input, sin_plus(origin_input))
         | 
| 280 | 
            +
                        elif activation_list[i] == 'acos':
         | 
| 281 | 
            +
                            Input = safe_aggregate(Input, acos(origin_input, alpha=1.0, beta=0.0))
         | 
| 282 | 
            +
                        elif activation_list[i] == 'gla':
         | 
| 283 | 
            +
                            Input = safe_aggregate(Input, gla(origin_input, alpha=1.0, mu=0.0))
         | 
| 284 | 
            +
                        elif activation_list[i] == 'srelu':
         | 
| 285 | 
            +
                            Input = safe_aggregate(Input, srelu(origin_input))
         | 
| 286 | 
            +
                        elif activation_list[i] == 'qelu':
         | 
| 287 | 
            +
                            Input = safe_aggregate(Input, qelu(origin_input))
         | 
| 288 | 
            +
                        elif activation_list[i] == 'isra':
         | 
| 289 | 
            +
                            Input = safe_aggregate(Input, isra(origin_input))
         | 
| 290 | 
            +
                        elif activation_list[i] == 'waveakt':
         | 
| 291 | 
            +
                            Input = safe_aggregate(Input, waveakt(origin_input))
         | 
| 292 | 
            +
                        elif activation_list[i] == 'arctan':
         | 
| 293 | 
            +
                            Input = safe_aggregate(Input, arctan(origin_input))
         | 
| 294 | 
            +
                        elif activation_list[i] == 'bent_identity':
         | 
| 295 | 
            +
                            Input = safe_aggregate(Input, bent_identity(origin_input))
         | 
| 296 | 
            +
                        elif activation_list[i] == 'sech':
         | 
| 297 | 
            +
                            Input = safe_aggregate(Input, sech(origin_input))
         | 
| 298 | 
            +
                        elif activation_list[i] == 'softsign':
         | 
| 299 | 
            +
                            Input = safe_aggregate(Input, softsign(origin_input))
         | 
| 300 | 
            +
                        elif activation_list[i] == 'pwl':
         | 
| 301 | 
            +
                            Input = safe_aggregate(Input, pwl(origin_input))
         | 
| 302 | 
            +
                        elif activation_list[i] == 'cubic':
         | 
| 303 | 
            +
                            Input = safe_aggregate(Input, cubic(origin_input))
         | 
| 304 | 
            +
                        elif activation_list[i] == 'gaussian':
         | 
| 305 | 
            +
                            Input = safe_aggregate(Input, gaussian(origin_input))
         | 
| 306 | 
            +
                        elif activation_list[i] == 'sine':
         | 
| 307 | 
            +
                            Input = safe_aggregate(Input, sine(origin_input))
         | 
| 308 | 
            +
                        elif activation_list[i] == 'tanh_square':
         | 
| 309 | 
            +
                            Input = safe_aggregate(Input, tanh_square(origin_input))
         | 
| 310 | 
            +
                        elif activation_list[i] == 'mod_sigmoid':
         | 
| 311 | 
            +
                            Input = safe_aggregate(Input, mod_sigmoid(origin_input))
         | 
| 312 | 
            +
                        elif activation_list[i] == 'linear':
         | 
| 313 | 
            +
                            Input = safe_aggregate(Input, origin_input)
         | 
| 314 | 
            +
                        elif activation_list[i] == 'quartic':
         | 
| 315 | 
            +
                            Input = safe_aggregate(Input, quartic(origin_input))
         | 
| 316 | 
            +
                        elif activation_list[i] == 'square_quartic':
         | 
| 317 | 
            +
                            Input = safe_aggregate(Input, square_quartic(origin_input))
         | 
| 318 | 
            +
                        elif activation_list[i] == 'cubic_quadratic':
         | 
| 319 | 
            +
                            Input = safe_aggregate(Input, cubic_quadratic(origin_input))
         | 
| 320 | 
            +
                        elif activation_list[i] == 'exp_cubic':
         | 
| 321 | 
            +
                            Input = safe_aggregate(Input, exp_cubic(origin_input))
         | 
| 322 | 
            +
                        elif activation_list[i] == 'sine_square':
         | 
| 323 | 
            +
                            Input = safe_aggregate(Input, sine_square(origin_input))
         | 
| 324 | 
            +
                        elif activation_list[i] == 'logarithmic':
         | 
| 325 | 
            +
                            Input = safe_aggregate(Input, logarithmic(origin_input))
         | 
| 326 | 
            +
                        elif activation_list[i] == 'scaled_cubic':
         | 
| 327 | 
            +
                            Input = safe_aggregate(Input, scaled_cubic(origin_input, 1.0))
         | 
| 328 | 
            +
                        elif activation_list[i] == 'sine_offset':
         | 
| 329 | 
            +
                            Input = safe_aggregate(Input, sine_offset(origin_input, 1.0))
         | 
| 330 | 
            +
                        elif activation_list[i] == 'spiral':
         | 
| 331 | 
            +
                            Input = safe_aggregate(Input, spiral_activation(origin_input))
         | 
| 332 | 
            +
                        elif activation_list[i] == 'circular':
         | 
| 333 | 
            +
                            Input = safe_aggregate(Input, circular_activation(origin_input))
         | 
| 366 334 |  | 
| 367 | 
            -
             | 
| 335 | 
            +
                    
         | 
| 336 | 
            +
                    except Exception as e:
         | 
| 337 | 
            +
                        warnings.warn(f"Error in activation {activation_list[i]}: {str(e)}", RuntimeWarning)
         | 
| 338 | 
            +
                        if not isinstance(Input, np.ndarray):
         | 
| 339 | 
            +
                            Input = np.array(Input)
         | 
| 340 | 
            +
                        if not isinstance(origin_input, np.ndarray):
         | 
| 341 | 
            +
                            origin_input = np.array(origin_input)
         | 
| 342 | 
            +
                        continue
         | 
| 343 | 
            +
             
         | 
| 344 | 
            +
                return Input
         | 
| @@ -1,4 +1,6 @@ | |
| 1 1 | 
             
            import cupy as cp
         | 
| 2 | 
            +
            from scipy.special import expit, softmax
         | 
| 3 | 
            +
            import warnings
         | 
| 2 4 |  | 
| 3 5 | 
             
            # ACTIVATION FUNCTIONS ----
         | 
| 4 6 |  | 
| @@ -9,355 +11,332 @@ def all_activations(): | |
| 9 11 | 
             
                return activations_list
         | 
| 10 12 |  | 
| 11 13 | 
             
            def spiral_activation(x):
         | 
| 12 | 
            -
                if x.ndim == 1:
         | 
| 13 | 
            -
                    r = cp.sqrt(cp.sum(x**2)) 
         | 
| 14 | 
            -
                    theta = cp.arctan2(x[1], x[0]) 
         | 
| 15 14 |  | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 15 | 
            +
                r = cp.sqrt(cp.sum(x**2))
         | 
| 16 | 
            +
                
         | 
| 17 | 
            +
                theta = cp.arctan2(x[1:], x[:-1])
         | 
| 18 18 |  | 
| 19 | 
            -
             | 
| 20 | 
            -
                 | 
| 21 | 
            -
             | 
| 22 | 
            -
                    theta = cp.arctan2(x[:, 1], x[:, 0]) 
         | 
| 19 | 
            +
                spiral_x = r * cp.cos(theta + r)
         | 
| 20 | 
            +
                spiral_y = r * cp.sin(theta + r)
         | 
| 21 | 
            +
                
         | 
| 23 22 |  | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 23 | 
            +
                spiral_output = cp.concatenate(([spiral_x[0]], spiral_y))
         | 
| 24 | 
            +
                
         | 
| 25 | 
            +
                return spiral_output
         | 
| 26 26 |  | 
| 27 | 
            -
                    spiral_output = cp.stack((spiral_x, spiral_y), axis=-1)
         | 
| 28 27 |  | 
| 29 | 
            -
             | 
| 28 | 
            +
            def Softmax(
         | 
| 29 | 
            +
                x  # num: Input data to be transformed using softmax function.
         | 
| 30 | 
            +
            ):
         | 
| 31 | 
            +
                """
         | 
| 32 | 
            +
                Applies the softmax function to the input data.
         | 
| 30 33 |  | 
| 34 | 
            +
                Args:
         | 
| 35 | 
            +
                    (num): Input data to be transformed using softmax function.
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                Returns:
         | 
| 38 | 
            +
                   (num): Transformed data after applying softmax function.
         | 
| 39 | 
            +
                """
         | 
| 31 40 |  | 
| 32 | 
            -
             | 
| 33 | 
            -
                """Optimized Softmax function"""
         | 
| 34 | 
            -
                return cp.array(cp.exp(x - cp.max(x, axis=-1, keepdims=True)) / cp.sum(cp.exp(x - cp.max(x, axis=-1, keepdims=True)), axis=-1, keepdims=True))
         | 
| 41 | 
            +
                return cp.array(softmax(x.get()))
         | 
| 35 42 |  | 
| 36 | 
            -
            def Sigmoid(x):
         | 
| 37 | 
            -
                """Optimized Sigmoid function"""
         | 
| 38 | 
            -
                return 1 / (1 + cp.exp(-x))
         | 
| 39 43 |  | 
| 40 | 
            -
            def  | 
| 41 | 
            -
                 | 
| 44 | 
            +
            def Sigmoid(
         | 
| 45 | 
            +
                x  # num: Input data to be transformed using sigmoid function.
         | 
| 46 | 
            +
            ):
         | 
| 47 | 
            +
                """
         | 
| 48 | 
            +
                Applies the sigmoid function to the input data.
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                Args:
         | 
| 51 | 
            +
                    (num): Input data to be transformed using sigmoid function.
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                Returns:
         | 
| 54 | 
            +
                    (num): Transformed data after applying sigmoid function.
         | 
| 55 | 
            +
                """
         | 
| 56 | 
            +
                return expit(x)
         | 
| 57 | 
            +
             | 
| 58 | 
            +
             | 
| 59 | 
            +
            def Relu(
         | 
| 60 | 
            +
                x  # num: Input data to be transformed using ReLU function.
         | 
| 61 | 
            +
            ):
         | 
| 62 | 
            +
                """
         | 
| 63 | 
            +
                Applies the Rectified Linear Unit (ReLU) function to the input data.
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                Args:
         | 
| 66 | 
            +
                    (num): Input data to be transformed using ReLU function.
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                Returns:
         | 
| 69 | 
            +
                    (num): Transformed data after applying ReLU function.
         | 
| 70 | 
            +
                """
         | 
| 71 | 
            +
             | 
| 42 72 | 
             
                return cp.maximum(0, x)
         | 
| 43 73 |  | 
| 74 | 
            +
             | 
| 44 75 | 
             
            def tanh(x):
         | 
| 45 | 
            -
                """Optimized Tanh function"""
         | 
| 46 76 | 
             
                return cp.tanh(x)
         | 
| 47 77 |  | 
| 48 78 | 
             
            def swish(x):
         | 
| 49 | 
            -
                 | 
| 50 | 
            -
                return x * Sigmoid(x)
         | 
| 79 | 
            +
                return x * (1 / (1 + cp.exp(-x)))
         | 
| 51 80 |  | 
| 52 81 | 
             
            def sin_plus(x):
         | 
| 53 | 
            -
                """Optimized SinPlus function"""
         | 
| 54 82 | 
             
                return (cp.sin(x) + 1) / 2
         | 
| 55 83 |  | 
| 56 84 | 
             
            def modular_circular_activation(x, period=2*cp.pi):
         | 
| 57 | 
            -
                """Optimized Modular Circular Activation function"""
         | 
| 58 85 | 
             
                return cp.mod(x, period) / period
         | 
| 59 86 |  | 
| 60 87 | 
             
            def tanh_circular_activation(x):
         | 
| 61 | 
            -
                """Optimized Tanh Circular Activation function"""
         | 
| 62 88 | 
             
                return (cp.tanh(x) + 1) / 2
         | 
| 63 89 |  | 
| 64 90 | 
             
            def leaky_relu(x, alpha=0.01):
         | 
| 65 | 
            -
                """Optimized Leaky ReLU function"""
         | 
| 66 91 | 
             
                return cp.where(x > 0, x, alpha * x)
         | 
| 67 92 |  | 
| 68 93 | 
             
            def softplus(x):
         | 
| 69 | 
            -
                 | 
| 70 | 
            -
                return cp.log1p(cp.exp(x))
         | 
| 94 | 
            +
                return cp.log(1 + cp.exp(x))
         | 
| 71 95 |  | 
| 72 96 | 
             
            def elu(x, alpha=1.0):
         | 
| 73 | 
            -
                """Optimized ELU function"""
         | 
| 74 97 | 
             
                return cp.where(x > 0, x, alpha * (cp.exp(x) - 1))
         | 
| 75 98 |  | 
| 76 99 | 
             
            def gelu(x):
         | 
| 77 | 
            -
                """Optimized GELU function"""
         | 
| 78 100 | 
             
                return 0.5 * x * (1 + cp.tanh(cp.sqrt(2 / cp.pi) * (x + 0.044715 * cp.power(x, 3))))
         | 
| 79 101 |  | 
| 80 102 | 
             
            def selu(x, lambda_=1.0507, alpha=1.6733):
         | 
| 81 | 
            -
                """Optimized SELU function"""
         | 
| 82 103 | 
             
                return lambda_ * cp.where(x > 0, x, alpha * (cp.exp(x) - 1))
         | 
| 83 104 |  | 
| 84 105 | 
             
            def sinakt(x):
         | 
| 85 | 
            -
                """Optimized SinAkt function"""
         | 
| 86 106 | 
             
                return cp.sin(x) + cp.cos(x)
         | 
| 87 107 |  | 
| 88 108 | 
             
            def p_squared(x, alpha=1.0, beta=0.0):
         | 
| 89 | 
            -
                """Optimized P-squared function"""
         | 
| 90 109 | 
             
                return alpha * x**2 + beta * x
         | 
| 91 110 |  | 
| 92 111 | 
             
            def sglu(x, alpha=1.0):
         | 
| 93 | 
            -
                 | 
| 94 | 
            -
                return cp.array(cp.exp(alpha * x)) * x
         | 
| 112 | 
            +
                return cp.array(softmax(alpha * x.get())) * x
         | 
| 95 113 |  | 
| 114 | 
            +
            # 4. Double Leaky ReLU (DLReLU)
         | 
| 96 115 | 
             
            def dlrelu(x):
         | 
| 97 | 
            -
                """Optimized Double Leaky ReLU (DLReLU) function"""
         | 
| 98 116 | 
             
                return cp.maximum(0.01 * x, x) + cp.minimum(0.01 * x, 0.1 * x)
         | 
| 99 117 |  | 
| 118 | 
            +
            # 5. Exponential Sigmoid (ExSig)
         | 
| 100 119 | 
             
            def exsig(x):
         | 
| 101 | 
            -
                """Optimized Exponential Sigmoid (ExSig) function"""
         | 
| 102 120 | 
             
                return 1 / (1 + cp.exp(-x**2))
         | 
| 103 121 |  | 
| 122 | 
            +
            # 6. Adaptive Cosine Activation (ACos)
         | 
| 104 123 | 
             
            def acos(x, alpha=1.0, beta=0.0):
         | 
| 105 | 
            -
                """Optimized Adaptive Cosine Activation (ACos) function"""
         | 
| 106 124 | 
             
                return cp.cos(alpha * x + beta)
         | 
| 107 125 |  | 
| 126 | 
            +
            # 7. Gaussian-like Activation (GLA)
         | 
| 108 127 | 
             
            def gla(x, alpha=1.0, mu=0.0):
         | 
| 109 | 
            -
                """Optimized Gaussian-like Activation (GLA) function"""
         | 
| 110 128 | 
             
                return cp.exp(-alpha * (x - mu)**2)
         | 
| 111 129 |  | 
| 130 | 
            +
            # 8. Swish ReLU (SReLU)
         | 
| 112 131 | 
             
            def srelu(x):
         | 
| 113 | 
            -
                """Optimized Swish ReLU (SReLU) function"""
         | 
| 114 132 | 
             
                return x * (1 / (1 + cp.exp(-x))) + cp.maximum(0, x)
         | 
| 115 133 |  | 
| 134 | 
            +
            # 9. Quadratic Exponential Linear Unit (QELU)
         | 
| 116 135 | 
             
            def qelu(x):
         | 
| 117 | 
            -
                """Optimized Quadratic Exponential Linear Unit (QELU) function"""
         | 
| 118 136 | 
             
                return x**2 * cp.exp(x) - 1
         | 
| 119 137 |  | 
| 138 | 
            +
            # 10. Inverse Square Root Activation (ISRA)
         | 
| 120 139 | 
             
            def isra(x):
         | 
| 121 | 
            -
                """Optimized Inverse Square Root Activation (ISRA) function"""
         | 
| 122 140 | 
             
                return x / cp.sqrt(cp.abs(x) + 1)
         | 
| 123 141 |  | 
| 124 142 | 
             
            def waveakt(x, alpha=1.0, beta=2.0, gamma=3.0):
         | 
| 125 | 
            -
                """Optimized Wave Activation function"""
         | 
| 126 143 | 
             
                return cp.sin(alpha * x) * cp.cos(beta * x) * cp.sin(gamma * x)
         | 
| 127 144 |  | 
| 128 145 | 
             
            def arctan(x):
         | 
| 129 | 
            -
                """Optimized Arctan function"""
         | 
| 130 146 | 
             
                return cp.arctan(x)
         | 
| 131 147 |  | 
| 132 148 | 
             
            def bent_identity(x):
         | 
| 133 | 
            -
                """Optimized Bent Identity function"""
         | 
| 134 149 | 
             
                return (cp.sqrt(x**2 + 1) - 1) / 2 + x
         | 
| 135 150 |  | 
| 136 | 
            -
            def circular_activation(x, scale=2.0, frequency=1.0, shift=0.0):
         | 
| 137 | 
            -
                 | 
| 151 | 
            +
            def circular_activation(x, scale=2.0, frequency=1.0, shift=0.0):    
         | 
| 152 | 
            +
                
         | 
| 138 153 | 
             
                n_features = x.shape[0]
         | 
| 154 | 
            +
                
         | 
| 139 155 | 
             
                circular_output = cp.zeros_like(x)
         | 
| 140 156 |  | 
| 141 | 
            -
                r = cp.sqrt(cp.sum(x**2))
         | 
| 142 157 | 
             
                for i in range(n_features):
         | 
| 158 | 
            +
                    
         | 
| 159 | 
            +
                    r = cp.sqrt(cp.sum(x**2))
         | 
| 143 160 | 
             
                    theta = 2 * cp.pi * (i / n_features) + shift
         | 
| 161 | 
            +
                    
         | 
| 144 162 | 
             
                    circular_x = r * cp.cos(theta + frequency * r) * scale
         | 
| 145 163 | 
             
                    circular_y = r * cp.sin(theta + frequency * r) * scale
         | 
| 146 164 |  | 
| 147 | 
            -
                     | 
| 165 | 
            +
                    if i % 2 == 0:
         | 
| 166 | 
            +
                        circular_output[i] = circular_x
         | 
| 167 | 
            +
                    else:
         | 
| 168 | 
            +
                        circular_output[i] = circular_y
         | 
| 148 169 |  | 
| 149 170 | 
             
                return circular_output
         | 
| 150 171 |  | 
| 151 172 | 
             
            def sech(x):
         | 
| 152 | 
            -
                """Optimized Sech function"""
         | 
| 153 173 | 
             
                return 2 / (cp.exp(x) + cp.exp(-x))
         | 
| 154 174 |  | 
| 155 175 | 
             
            def softsign(x):
         | 
| 156 | 
            -
                """Optimized Softsign function"""
         | 
| 157 176 | 
             
                return x / (1 + cp.abs(x))
         | 
| 158 177 |  | 
| 159 178 | 
             
            def pwl(x, alpha=0.5, beta=1.5):
         | 
| 160 | 
            -
                """Optimized Piecewise Linear function (PWL)"""
         | 
| 161 179 | 
             
                return cp.where(x <= 0, alpha * x, beta * x)
         | 
| 162 180 |  | 
| 163 181 | 
             
            def cubic(x):
         | 
| 164 | 
            -
                """Optimized Cubic function"""
         | 
| 165 182 | 
             
                return x**3
         | 
| 166 183 |  | 
| 167 184 | 
             
            def gaussian(x, alpha=1.0, mu=0.0):
         | 
| 168 | 
            -
                """Optimized Gaussian function"""
         | 
| 169 185 | 
             
                return cp.exp(-alpha * (x - mu)**2)
         | 
| 170 | 
            -
             | 
| 186 | 
            +
                            
         | 
| 171 187 | 
             
            def sine(x, alpha=1.0):
         | 
| 172 | 
            -
                """Optimized Sine function"""
         | 
| 173 188 | 
             
                return cp.sin(alpha * x)
         | 
| 174 189 |  | 
| 175 190 | 
             
            def tanh_square(x):
         | 
| 176 | 
            -
                """Optimized Tanh Square function"""
         | 
| 177 191 | 
             
                return cp.tanh(x)**2
         | 
| 178 192 |  | 
| 179 193 | 
             
            def mod_sigmoid(x, alpha=1.0, beta=0.0):
         | 
| 180 | 
            -
                """Optimized Modified Sigmoid function"""
         | 
| 181 194 | 
             
                return 1 / (1 + cp.exp(-alpha * x + beta))
         | 
| 182 195 |  | 
| 183 196 | 
             
            def quartic(x):
         | 
| 184 | 
            -
                """Optimized Quartic function"""
         | 
| 185 197 | 
             
                return x**4
         | 
| 186 198 |  | 
| 187 199 | 
             
            def square_quartic(x):
         | 
| 188 | 
            -
                """Optimized Square Quartic function"""
         | 
| 189 200 | 
             
                return (x**2)**2
         | 
| 190 201 |  | 
| 191 202 | 
             
            def cubic_quadratic(x):
         | 
| 192 | 
            -
                """Optimized Cubic Quadratic function"""
         | 
| 193 203 | 
             
                return x**3 * (x**2)
         | 
| 194 204 |  | 
| 195 205 | 
             
            def exp_cubic(x):
         | 
| 196 | 
            -
                """Optimized Exponential Cubic function"""
         | 
| 197 206 | 
             
                return cp.exp(x**3)
         | 
| 198 207 |  | 
| 199 208 | 
             
            def sine_square(x):
         | 
| 200 | 
            -
                """Optimized Sine Square function"""
         | 
| 201 209 | 
             
                return cp.sin(x)**2
         | 
| 202 210 |  | 
| 203 211 | 
             
            def logarithmic(x):
         | 
| 204 | 
            -
                """Optimized Logarithmic function"""
         | 
| 205 212 | 
             
                return cp.log(x**2 + 1)
         | 
| 206 213 |  | 
| 207 214 | 
             
            def scaled_cubic(x, alpha=1.0):
         | 
| 208 | 
            -
                """Optimized Scaled Cubic function"""
         | 
| 209 215 | 
             
                return alpha * x**3
         | 
| 210 216 |  | 
| 211 217 | 
             
            def sine_offset(x, beta=0.0):
         | 
| 212 | 
            -
                """Optimized Sine Offset function"""
         | 
| 213 218 | 
             
                return cp.sin(x + beta)
         | 
| 214 219 |  | 
| 215 | 
            -
            def apply_activation(Input, activation_list):
         | 
| 216 | 
            -
               """
         | 
| 217 | 
            -
                Applies a sequence of activation functions to the input.
         | 
| 218 | 
            -
                
         | 
| 219 | 
            -
                Args:
         | 
| 220 | 
            -
                    Input (numpy.ndarray): The input to apply activations to.
         | 
| 221 | 
            -
                    activation_list (list): A list of activation function names to apply.
         | 
| 222 | 
            -
                
         | 
| 223 | 
            -
                Returns:
         | 
| 224 | 
            -
                    numpy.ndarray: The input after all activations have been applied.
         | 
| 225 | 
            -
               """
         | 
| 226 | 
            -
                
         | 
| 227 | 
            -
               origin_input = cp.copy(Input)
         | 
| 228 | 
            -
             | 
| 229 | 
            -
               for i in range(len(activation_list)):
         | 
| 230 | 
            -
             | 
| 231 | 
            -
                  if activation_list[i] == 'sigmoid':
         | 
| 232 | 
            -
                     Input += Sigmoid(origin_input)
         | 
| 233 | 
            -
             | 
| 234 | 
            -
                  elif activation_list[i] == 'swish':
         | 
| 235 | 
            -
                     Input += swish(origin_input)
         | 
| 236 | 
            -
             | 
| 237 | 
            -
                  elif activation_list[i] == 'mod_circular':
         | 
| 238 | 
            -
                     Input += modular_circular_activation(origin_input)
         | 
| 239 | 
            -
             | 
| 240 | 
            -
                  elif activation_list[i] == 'tanh_circular':
         | 
| 241 | 
            -
                     Input += tanh_circular_activation(origin_input)
         | 
| 242 | 
            -
             | 
| 243 | 
            -
                  elif activation_list[i] == 'leaky_relu':
         | 
| 244 | 
            -
                     Input += leaky_relu(origin_input)
         | 
| 245 | 
            -
             | 
| 246 | 
            -
                  elif activation_list[i] == 'relu':
         | 
| 247 | 
            -
                     Input += Relu(origin_input)
         | 
| 248 | 
            -
             | 
| 249 | 
            -
                  elif activation_list[i] == 'softplus':
         | 
| 250 | 
            -
                     Input += softplus(origin_input)
         | 
| 251 220 |  | 
| 252 | 
            -
                  elif activation_list[i] == 'elu':
         | 
| 253 | 
            -
                     Input += elu(origin_input)
         | 
| 254 221 |  | 
| 255 | 
            -
             | 
| 256 | 
            -
             | 
| 257 | 
            -
             | 
| 258 | 
            -
             | 
| 259 | 
            -
             | 
| 260 | 
            -
             | 
| 261 | 
            -
                  elif activation_list[i] == 'tanh':
         | 
| 262 | 
            -
                     Input += tanh(origin_input)
         | 
| 263 | 
            -
             | 
| 264 | 
            -
                  elif activation_list[i] == 'sinakt':
         | 
| 265 | 
            -
                     Input += sinakt(origin_input)
         | 
| 266 | 
            -
             | 
| 267 | 
            -
                  elif activation_list[i] == 'p_squared':
         | 
| 268 | 
            -
                     Input += p_squared(origin_input)
         | 
| 269 | 
            -
             | 
| 270 | 
            -
                  elif activation_list[i] == 'sglu':
         | 
| 271 | 
            -
                     Input += sglu(origin_input, alpha=1.0)
         | 
| 272 | 
            -
             | 
| 273 | 
            -
                  elif activation_list[i] == 'dlrelu':
         | 
| 274 | 
            -
                     Input += dlrelu(origin_input)
         | 
| 275 | 
            -
             | 
| 276 | 
            -
                  elif activation_list[i] == 'exsig':
         | 
| 277 | 
            -
                     Input += exsig(origin_input)
         | 
| 278 | 
            -
             | 
| 279 | 
            -
                  elif activation_list[i] == 'sin_plus':
         | 
| 280 | 
            -
                     Input += sin_plus(origin_input)
         | 
| 281 | 
            -
             | 
| 282 | 
            -
                  elif activation_list[i] == 'acos':
         | 
| 283 | 
            -
                     Input += acos(origin_input, alpha=1.0, beta=0.0)
         | 
| 284 | 
            -
             | 
| 285 | 
            -
                  elif activation_list[i] == 'gla':
         | 
| 286 | 
            -
                     Input += gla(origin_input, alpha=1.0, mu=0.0)
         | 
| 287 | 
            -
             | 
| 288 | 
            -
                  elif activation_list[i] == 'srelu':
         | 
| 289 | 
            -
                     Input += srelu(origin_input)
         | 
| 290 | 
            -
             | 
| 291 | 
            -
                  elif activation_list[i] == 'qelu':
         | 
| 292 | 
            -
                     Input += qelu(origin_input)
         | 
| 293 | 
            -
             | 
| 294 | 
            -
                  elif activation_list[i] == 'isra':
         | 
| 295 | 
            -
                     Input += isra(origin_input)
         | 
| 296 | 
            -
             | 
| 297 | 
            -
                  elif activation_list[i] == 'waveakt':
         | 
| 298 | 
            -
                     Input += waveakt(origin_input)
         | 
| 299 | 
            -
             | 
| 300 | 
            -
                  elif activation_list[i] == 'arctan':
         | 
| 301 | 
            -
                     Input += arctan(origin_input)
         | 
| 302 | 
            -
             | 
| 303 | 
            -
                  elif activation_list[i] == 'bent_identity':
         | 
| 304 | 
            -
                     Input += bent_identity(origin_input)
         | 
| 305 | 
            -
             | 
| 306 | 
            -
                  elif activation_list[i] == 'sech':
         | 
| 307 | 
            -
                     Input += sech(origin_input)
         | 
| 308 | 
            -
             | 
| 309 | 
            -
                  elif activation_list[i] == 'softsign':
         | 
| 310 | 
            -
                     Input += softsign(origin_input)
         | 
| 311 | 
            -
             | 
| 312 | 
            -
                  elif activation_list[i] == 'pwl':
         | 
| 313 | 
            -
                     Input += pwl(origin_input)
         | 
| 314 | 
            -
             | 
| 315 | 
            -
                  elif activation_list[i] == 'cubic':
         | 
| 316 | 
            -
                     Input += cubic(origin_input)
         | 
| 317 | 
            -
             | 
| 318 | 
            -
                  elif activation_list[i] == 'gaussian':
         | 
| 319 | 
            -
                     Input += gaussian(origin_input)
         | 
| 320 | 
            -
             | 
| 321 | 
            -
                  elif activation_list[i] == 'sine':
         | 
| 322 | 
            -
                     Input += sine(origin_input)
         | 
| 323 | 
            -
             | 
| 324 | 
            -
                  elif activation_list[i] == 'tanh_square':
         | 
| 325 | 
            -
                     Input += tanh_square(origin_input)
         | 
| 326 | 
            -
             | 
| 327 | 
            -
                  elif activation_list[i] == 'mod_sigmoid':
         | 
| 328 | 
            -
                     Input += mod_sigmoid(origin_input)
         | 
| 329 | 
            -
             | 
| 330 | 
            -
                  elif activation_list[i] == 'linear':
         | 
| 331 | 
            -
                     Input += origin_input
         | 
| 332 | 
            -
             | 
| 333 | 
            -
                  elif activation_list[i] == 'quartic':
         | 
| 334 | 
            -
                     Input += quartic(origin_input)
         | 
| 335 | 
            -
             | 
| 336 | 
            -
                  elif activation_list[i] == 'square_quartic':
         | 
| 337 | 
            -
                     Input += square_quartic(origin_input)
         | 
| 338 | 
            -
             | 
| 339 | 
            -
                  elif activation_list[i] == 'cubic_quadratic':
         | 
| 340 | 
            -
                     Input += cubic_quadratic(origin_input)
         | 
| 341 | 
            -
             | 
| 342 | 
            -
                  elif activation_list[i] == 'exp_cubic':
         | 
| 343 | 
            -
                     Input += exp_cubic(origin_input)
         | 
| 344 | 
            -
             | 
| 345 | 
            -
                  elif activation_list[i] == 'sine_square':
         | 
| 346 | 
            -
                     Input += sine_square(origin_input)
         | 
| 347 | 
            -
             | 
| 348 | 
            -
                  elif activation_list[i] == 'logarithmic':
         | 
| 349 | 
            -
                     Input += logarithmic(origin_input)
         | 
| 350 | 
            -
             | 
| 351 | 
            -
                  elif activation_list[i] == 'scaled_cubic':
         | 
| 352 | 
            -
                     Input += scaled_cubic(origin_input, 1.0)
         | 
| 353 | 
            -
             | 
| 354 | 
            -
                  elif activation_list[i] == 'sine_offset':
         | 
| 355 | 
            -
                     Input += sine_offset(origin_input, 1.0)
         | 
| 356 | 
            -
             | 
| 357 | 
            -
                  elif activation_list[i] == 'spiral':
         | 
| 358 | 
            -
                     Input += spiral_activation(origin_input)
         | 
| 359 | 
            -
             | 
| 360 | 
            -
                  elif activation_list[i] == 'circular':
         | 
| 361 | 
            -
                     Input += circular_activation(origin_input)
         | 
| 222 | 
            +
            def safe_aggregate(current_sum, new_value):
         | 
| 223 | 
            +
                    try:
         | 
| 224 | 
            +
                        return current_sum + new_value
         | 
| 225 | 
            +
                    except OverflowError:
         | 
| 226 | 
            +
                        return cp.array(current_sum) + cp.array(new_value)
         | 
| 227 | 
            +
                
         | 
| 362 228 |  | 
| 363 | 
            -
             | 
| 229 | 
            +
            def apply_activation(Input, activation_list):
         | 
| 230 | 
            +
                """
         | 
| 231 | 
            +
                    Applies a sequence of activation functions to the input.
         | 
| 232 | 
            +
                    
         | 
| 233 | 
            +
                    Args:
         | 
| 234 | 
            +
                        Input (numpy.ndarray): The input to apply activations to.
         | 
| 235 | 
            +
                        activation_list (list): A list of activation function names to apply.
         | 
| 236 | 
            +
                    
         | 
| 237 | 
            +
                    Returns:
         | 
| 238 | 
            +
                        numpy.ndarray: The input after all activations have been applied.
         | 
| 239 | 
            +
                """
         | 
| 240 | 
            +
                
         | 
| 241 | 
            +
                origin_input = cp.copy(Input)
         | 
| 242 | 
            +
             | 
| 243 | 
            +
                for i in range(len(activation_list)):
         | 
| 244 | 
            +
                    try:
         | 
| 245 | 
            +
                        if activation_list[i] == 'sigmoid':
         | 
| 246 | 
            +
                            Input = safe_aggregate(Input, Sigmoid(origin_input))
         | 
| 247 | 
            +
                        elif activation_list[i] == 'swish':
         | 
| 248 | 
            +
                            Input = safe_aggregate(Input, swish(origin_input))
         | 
| 249 | 
            +
                        elif activation_list[i] == 'mod_circular':
         | 
| 250 | 
            +
                            Input = safe_aggregate(Input, modular_circular_activation(origin_input))
         | 
| 251 | 
            +
                        elif activation_list[i] == 'tanh_circular':
         | 
| 252 | 
            +
                            Input = safe_aggregate(Input, tanh_circular_activation(origin_input))
         | 
| 253 | 
            +
                        elif activation_list[i] == 'leaky_relu':
         | 
| 254 | 
            +
                            Input = safe_aggregate(Input, leaky_relu(origin_input))
         | 
| 255 | 
            +
                        elif activation_list[i] == 'relu':
         | 
| 256 | 
            +
                            Input = safe_aggregate(Input, Relu(origin_input))
         | 
| 257 | 
            +
                        elif activation_list[i] == 'softplus':
         | 
| 258 | 
            +
                            Input = safe_aggregate(Input, softplus(origin_input))
         | 
| 259 | 
            +
                        elif activation_list[i] == 'elu':
         | 
| 260 | 
            +
                            Input = safe_aggregate(Input, elu(origin_input))
         | 
| 261 | 
            +
                        elif activation_list[i] == 'gelu':
         | 
| 262 | 
            +
                            Input = safe_aggregate(Input, gelu(origin_input))
         | 
| 263 | 
            +
                        elif activation_list[i] == 'selu':
         | 
| 264 | 
            +
                            Input = safe_aggregate(Input, selu(origin_input))
         | 
| 265 | 
            +
                        elif activation_list[i] == 'tanh':
         | 
| 266 | 
            +
                            Input = safe_aggregate(Input, tanh(origin_input))
         | 
| 267 | 
            +
                        elif activation_list[i] == 'sinakt':
         | 
| 268 | 
            +
                            Input = safe_aggregate(Input, sinakt(origin_input))
         | 
| 269 | 
            +
                        elif activation_list[i] == 'p_squared':
         | 
| 270 | 
            +
                            Input = safe_aggregate(Input, p_squared(origin_input))
         | 
| 271 | 
            +
                        elif activation_list[i] == 'sglu':
         | 
| 272 | 
            +
                            Input = safe_aggregate(Input, sglu(origin_input, alpha=1.0))
         | 
| 273 | 
            +
                        elif activation_list[i] == 'dlrelu':
         | 
| 274 | 
            +
                            Input = safe_aggregate(Input, dlrelu(origin_input))
         | 
| 275 | 
            +
                        elif activation_list[i] == 'exsig':
         | 
| 276 | 
            +
                            Input = safe_aggregate(Input, exsig(origin_input))
         | 
| 277 | 
            +
                        elif activation_list[i] == 'sin_plus':
         | 
| 278 | 
            +
                            Input = safe_aggregate(Input, sin_plus(origin_input))
         | 
| 279 | 
            +
                        elif activation_list[i] == 'acos':
         | 
| 280 | 
            +
                            Input = safe_aggregate(Input, acos(origin_input, alpha=1.0, beta=0.0))
         | 
| 281 | 
            +
                        elif activation_list[i] == 'gla':
         | 
| 282 | 
            +
                            Input = safe_aggregate(Input, gla(origin_input, alpha=1.0, mu=0.0))
         | 
| 283 | 
            +
                        elif activation_list[i] == 'srelu':
         | 
| 284 | 
            +
                            Input = safe_aggregate(Input, srelu(origin_input))
         | 
| 285 | 
            +
                        elif activation_list[i] == 'qelu':
         | 
| 286 | 
            +
                            Input = safe_aggregate(Input, qelu(origin_input))
         | 
| 287 | 
            +
                        elif activation_list[i] == 'isra':
         | 
| 288 | 
            +
                            Input = safe_aggregate(Input, isra(origin_input))
         | 
| 289 | 
            +
                        elif activation_list[i] == 'waveakt':
         | 
| 290 | 
            +
                            Input = safe_aggregate(Input, waveakt(origin_input))
         | 
| 291 | 
            +
                        elif activation_list[i] == 'arctan':
         | 
| 292 | 
            +
                            Input = safe_aggregate(Input, arctan(origin_input))
         | 
| 293 | 
            +
                        elif activation_list[i] == 'bent_identity':
         | 
| 294 | 
            +
                            Input = safe_aggregate(Input, bent_identity(origin_input))
         | 
| 295 | 
            +
                        elif activation_list[i] == 'sech':
         | 
| 296 | 
            +
                            Input = safe_aggregate(Input, sech(origin_input))
         | 
| 297 | 
            +
                        elif activation_list[i] == 'softsign':
         | 
| 298 | 
            +
                            Input = safe_aggregate(Input, softsign(origin_input))
         | 
| 299 | 
            +
                        elif activation_list[i] == 'pwl':
         | 
| 300 | 
            +
                            Input = safe_aggregate(Input, pwl(origin_input))
         | 
| 301 | 
            +
                        elif activation_list[i] == 'cubic':
         | 
| 302 | 
            +
                            Input = safe_aggregate(Input, cubic(origin_input))
         | 
| 303 | 
            +
                        elif activation_list[i] == 'gaussian':
         | 
| 304 | 
            +
                            Input = safe_aggregate(Input, gaussian(origin_input))
         | 
| 305 | 
            +
                        elif activation_list[i] == 'sine':
         | 
| 306 | 
            +
                            Input = safe_aggregate(Input, sine(origin_input))
         | 
| 307 | 
            +
                        elif activation_list[i] == 'tanh_square':
         | 
| 308 | 
            +
                            Input = safe_aggregate(Input, tanh_square(origin_input))
         | 
| 309 | 
            +
                        elif activation_list[i] == 'mod_sigmoid':
         | 
| 310 | 
            +
                            Input = safe_aggregate(Input, mod_sigmoid(origin_input))
         | 
| 311 | 
            +
                        elif activation_list[i] == 'linear':
         | 
| 312 | 
            +
                            Input = safe_aggregate(Input, origin_input)
         | 
| 313 | 
            +
                        elif activation_list[i] == 'quartic':
         | 
| 314 | 
            +
                            Input = safe_aggregate(Input, quartic(origin_input))
         | 
| 315 | 
            +
                        elif activation_list[i] == 'square_quartic':
         | 
| 316 | 
            +
                            Input = safe_aggregate(Input, square_quartic(origin_input))
         | 
| 317 | 
            +
                        elif activation_list[i] == 'cubic_quadratic':
         | 
| 318 | 
            +
                            Input = safe_aggregate(Input, cubic_quadratic(origin_input))
         | 
| 319 | 
            +
                        elif activation_list[i] == 'exp_cubic':
         | 
| 320 | 
            +
                            Input = safe_aggregate(Input, exp_cubic(origin_input))
         | 
| 321 | 
            +
                        elif activation_list[i] == 'sine_square':
         | 
| 322 | 
            +
                            Input = safe_aggregate(Input, sine_square(origin_input))
         | 
| 323 | 
            +
                        elif activation_list[i] == 'logarithmic':
         | 
| 324 | 
            +
                            Input = safe_aggregate(Input, logarithmic(origin_input))
         | 
| 325 | 
            +
                        elif activation_list[i] == 'scaled_cubic':
         | 
| 326 | 
            +
                            Input = safe_aggregate(Input, scaled_cubic(origin_input, 1.0))
         | 
| 327 | 
            +
                        elif activation_list[i] == 'sine_offset':
         | 
| 328 | 
            +
                            Input = safe_aggregate(Input, sine_offset(origin_input, 1.0))
         | 
| 329 | 
            +
                        elif activation_list[i] == 'spiral':
         | 
| 330 | 
            +
                            Input = safe_aggregate(Input, spiral_activation(origin_input))
         | 
| 331 | 
            +
                        elif activation_list[i] == 'circular':
         | 
| 332 | 
            +
                            Input = safe_aggregate(Input, circular_activation(origin_input))
         | 
| 333 | 
            +
                    
         | 
| 334 | 
            +
                    except Exception as e:
         | 
| 335 | 
            +
                        warnings.warn(f"Error in activation {activation_list[i]}: {str(e)}", RuntimeWarning)
         | 
| 336 | 
            +
                        if not isinstance(Input, cp.ndarray):
         | 
| 337 | 
            +
                            Input = cp.array(Input)
         | 
| 338 | 
            +
                        if not isinstance(origin_input, cp.ndarray):
         | 
| 339 | 
            +
                            origin_input = cp.array(origin_input)
         | 
| 340 | 
            +
                        continue
         | 
| 341 | 
            +
             
         | 
| 342 | 
            +
                return Input
         | 
| @@ -430,11 +430,14 @@ def find_closest_factors(a): | |
| 430 430 | 
             
                        j = a // i
         | 
| 431 431 | 
             
                        return i, j
         | 
| 432 432 |  | 
| 433 | 
            -
             | 
| 434 433 | 
             
            def batcher(x_test, y_test, batch_size=1):
         | 
| 435 | 
            -
             | 
| 434 | 
            +
             | 
| 435 | 
            +
                if batch_size == 1:
         | 
| 436 | 
            +
                    return x_test, y_test
         | 
| 437 | 
            +
             | 
| 438 | 
            +
                y_labels = cp.argmax(y_test, axis=1)
         | 
| 436 439 |  | 
| 437 | 
            -
                unique_labels = cp.unique(y_labels) | 
| 440 | 
            +
                unique_labels = cp.unique(y_labels)
         | 
| 438 441 | 
             
                total_samples = sum(
         | 
| 439 442 | 
             
                    int(cp.sum(y_labels == class_label) * batch_size) for class_label in unique_labels
         | 
| 440 443 | 
             
                )
         | 
| @@ -444,20 +447,15 @@ def batcher(x_test, y_test, batch_size=1): | |
| 444 447 |  | 
| 445 448 | 
             
                offset = 0
         | 
| 446 449 | 
             
                for class_label in unique_labels:
         | 
| 447 | 
            -
                    # Sınıfa ait indeksleri bulun
         | 
| 448 450 | 
             
                    class_indices = cp.where(y_labels == class_label)[0]
         | 
| 449 451 |  | 
| 450 | 
            -
                    # Örnek sayısını belirle
         | 
| 451 452 | 
             
                    num_samples = int(len(class_indices) * batch_size)
         | 
| 452 453 |  | 
| 453 | 
            -
                    # Rastgele örnek seç
         | 
| 454 454 | 
             
                    sampled_indices = cp.random.choice(class_indices, num_samples, replace=False)
         | 
| 455 455 |  | 
| 456 | 
            -
                    # Veriyi sampled dizilerine yaz
         | 
| 457 456 | 
             
                    sampled_x[offset:offset + num_samples] = x_test[sampled_indices]
         | 
| 458 457 | 
             
                    sampled_y[offset:offset + num_samples] = y_test[sampled_indices]
         | 
| 459 | 
            -
             | 
| 460 | 
            -
                    # Kaydırmayı güncelle
         | 
| 458 | 
            +
             | 
| 461 459 | 
             
                    offset += num_samples
         | 
| 462 460 |  | 
| 463 461 | 
             
                return sampled_x, sampled_y
         | 
    
        pyerualjetwork/plan.py
    CHANGED
    
    | @@ -137,7 +137,7 @@ def fit( | |
| 137 137 |  | 
| 138 138 | 
             
                # Training process
         | 
| 139 139 | 
             
                for index, inp in enumerate(x_train):
         | 
| 140 | 
            -
                    inp = np.array(inp, copy=False).ravel()
         | 
| 140 | 
            +
                    inp = np.array(inp, copy=False, dtype=dtype).ravel()
         | 
| 141 141 | 
             
                    y_decoded = decode_one_hot(y_train)
         | 
| 142 142 | 
             
                    # Weight updates
         | 
| 143 143 | 
             
                    STPW = feed_forward(inp, STPW, is_training=True, Class=y_decoded[index], activation_potentiation=activation_potentiation, LTD=LTD)
         | 
| @@ -304,8 +304,9 @@ def learner(x_train, y_train, x_test=None, y_test=None, strategy='accuracy', bat | |
| 304 304 | 
             
                else:
         | 
| 305 305 | 
             
                    best_activations = start_this
         | 
| 306 306 | 
             
                    x_test_batch, y_test_batch = batcher(x_test, y_test, batch_size=batch_size)
         | 
| 307 | 
            -
             | 
| 308 | 
            -
                     | 
| 307 | 
            +
             | 
| 308 | 
            +
                    W = fit(x_train, y_train, activation_potentiation=best_activations, train_bar=False, auto_normalization=auto_normalization, dtype=dtype)
         | 
| 309 | 
            +
                    model = evaluate(x_test_batch, y_test_batch, W=W, loading_bar_status=False, activation_potentiation=activations, dtype=dtype)
         | 
| 309 310 |  | 
| 310 311 | 
             
                    if loss == 'categorical_crossentropy':
         | 
| 311 312 | 
             
                        test_loss = categorical_crossentropy(y_true_batch=y_test_batch, y_pred_batch=model[get_preds_softmax()])
         | 
| @@ -334,6 +335,7 @@ def learner(x_train, y_train, x_test=None, y_test=None, strategy='accuracy', bat | |
| 334 335 | 
             
                        activations.append(activation_potentiation[j])
         | 
| 335 336 |  | 
| 336 337 | 
             
                        x_test_batch, y_test_batch = batcher(x_test, y_test, batch_size=batch_size)
         | 
| 338 | 
            +
             | 
| 337 339 | 
             
                        W = fit(x_train, y_train, activation_potentiation=activations, train_bar=False, auto_normalization=auto_normalization, dtype=dtype)
         | 
| 338 340 | 
             
                        model = evaluate(x_test_batch, y_test_batch, W=W, loading_bar_status=False, activation_potentiation=activations, dtype=dtype)
         | 
| 339 341 |  | 
| @@ -435,7 +437,7 @@ def learner(x_train, y_train, x_test=None, y_test=None, strategy='accuracy', bat | |
| 435 437 | 
             
                            if target_acc is not None and best_acc >= target_acc:
         | 
| 436 438 | 
             
                                progress.close()
         | 
| 437 439 | 
             
                                train_model = evaluate(x_train, y_train, W=best_weights, loading_bar_status=False, 
         | 
| 438 | 
            -
                                                    activation_potentiation=final_activations)
         | 
| 440 | 
            +
                                                    activation_potentiation=final_activations, dtype=dtype)
         | 
| 439 441 |  | 
| 440 442 | 
             
                                if loss == 'categorical_crossentropy':
         | 
| 441 443 | 
             
                                    train_loss = categorical_crossentropy(y_true_batch=y_train, 
         | 
| @@ -460,7 +462,7 @@ def learner(x_train, y_train, x_test=None, y_test=None, strategy='accuracy', bat | |
| 460 462 | 
             
                            if target_loss is not None and best_loss <= target_loss:
         | 
| 461 463 | 
             
                                progress.close()
         | 
| 462 464 | 
             
                                train_model = evaluate(x_train, y_train, W=best_weights, loading_bar_status=False, 
         | 
| 463 | 
            -
                                                    activation_potentiation=final_activations)
         | 
| 465 | 
            +
                                                    activation_potentiation=final_activations, dtype=dtype)
         | 
| 464 466 |  | 
| 465 467 | 
             
                                if loss == 'categorical_crossentropy':
         | 
| 466 468 | 
             
                                    train_loss = categorical_crossentropy(y_true_batch=y_train, 
         | 
| @@ -503,7 +505,7 @@ def learner(x_train, y_train, x_test=None, y_test=None, strategy='accuracy', bat | |
| 503 505 | 
             
                        if best_acc_per_depth_list[i] == best_acc_per_depth_list[i-1]:
         | 
| 504 506 | 
             
                            progress.close()
         | 
| 505 507 | 
             
                            train_model = evaluate(x_train, y_train, W=best_weights, loading_bar_status=False, 
         | 
| 506 | 
            -
                                                activation_potentiation=final_activations)
         | 
| 508 | 
            +
                                                activation_potentiation=final_activations, dtype=dtype)
         | 
| 507 509 |  | 
| 508 510 | 
             
                            if loss == 'categorical_crossentropy':
         | 
| 509 511 | 
             
                                train_loss = categorical_crossentropy(y_true_batch=y_train, 
         | 
| @@ -527,7 +529,7 @@ def learner(x_train, y_train, x_test=None, y_test=None, strategy='accuracy', bat | |
| 527 529 | 
             
                # Final evaluation
         | 
| 528 530 | 
             
                progress.close()
         | 
| 529 531 | 
             
                train_model = evaluate(x_train, y_train, W=best_weights, loading_bar_status=False, 
         | 
| 530 | 
            -
                                    activation_potentiation=final_activations)
         | 
| 532 | 
            +
                                    activation_potentiation=final_activations, dtype=dtype)
         | 
| 531 533 |  | 
| 532 534 | 
             
                if loss == 'categorical_crossentropy':
         | 
| 533 535 | 
             
                    train_loss = categorical_crossentropy(y_true_batch=y_train, y_pred_batch=train_model[get_preds_softmax()])
         | 
    
        pyerualjetwork/plan_cuda.py
    CHANGED
    
    | @@ -428,7 +428,7 @@ def learner(x_train, y_train, x_test=None, y_test=None, strategy='accuracy', bat | |
| 428 428 | 
             
                            if target_acc is not None and best_acc >= target_acc:
         | 
| 429 429 | 
             
                                progress.close()
         | 
| 430 430 | 
             
                                train_model = evaluate(x_train, y_train, W=best_weights, loading_bar_status=False, 
         | 
| 431 | 
            -
                                                    activation_potentiation=final_activations)
         | 
| 431 | 
            +
                                                    activation_potentiation=final_activations, dtype=dtype)
         | 
| 432 432 |  | 
| 433 433 | 
             
                                if loss == 'categorical_crossentropy':
         | 
| 434 434 | 
             
                                    train_loss = categorical_crossentropy(y_true_batch=y_train, 
         | 
| @@ -453,7 +453,7 @@ def learner(x_train, y_train, x_test=None, y_test=None, strategy='accuracy', bat | |
| 453 453 | 
             
                            if target_loss is not None and best_loss <= target_loss:
         | 
| 454 454 | 
             
                                progress.close()
         | 
| 455 455 | 
             
                                train_model = evaluate(x_train, y_train, W=best_weights, loading_bar_status=False, 
         | 
| 456 | 
            -
                                                    activation_potentiation=final_activations)
         | 
| 456 | 
            +
                                                    activation_potentiation=final_activations, dtype=dtype)
         | 
| 457 457 |  | 
| 458 458 | 
             
                                if loss == 'categorical_crossentropy':
         | 
| 459 459 | 
             
                                    train_loss = categorical_crossentropy(y_true_batch=y_train, 
         | 
| @@ -496,7 +496,7 @@ def learner(x_train, y_train, x_test=None, y_test=None, strategy='accuracy', bat | |
| 496 496 | 
             
                        if best_acc_per_depth_list[i] == best_acc_per_depth_list[i-1]:
         | 
| 497 497 | 
             
                            progress.close()
         | 
| 498 498 | 
             
                            train_model = evaluate(x_train, y_train, W=best_weights, loading_bar_status=False, 
         | 
| 499 | 
            -
                                                activation_potentiation=final_activations)
         | 
| 499 | 
            +
                                                activation_potentiation=final_activations, dtype=dtype)
         | 
| 500 500 |  | 
| 501 501 | 
             
                            if loss == 'categorical_crossentropy':
         | 
| 502 502 | 
             
                                train_loss = categorical_crossentropy(y_true_batch=y_train, 
         | 
| @@ -520,7 +520,7 @@ def learner(x_train, y_train, x_test=None, y_test=None, strategy='accuracy', bat | |
| 520 520 | 
             
                # Final evaluation
         | 
| 521 521 | 
             
                progress.close()
         | 
| 522 522 | 
             
                train_model = evaluate(x_train, y_train, W=best_weights, loading_bar_status=False, 
         | 
| 523 | 
            -
                                    activation_potentiation=final_activations)
         | 
| 523 | 
            +
                                    activation_potentiation=final_activations, dtype=dtype)
         | 
| 524 524 |  | 
| 525 525 | 
             
                if loss == 'categorical_crossentropy':
         | 
| 526 526 | 
             
                    train_loss = categorical_crossentropy(y_true_batch=y_train, y_pred_batch=train_model[get_preds_softmax()])
         | 
| @@ -609,9 +609,9 @@ def evaluate( | |
| 609 609 |  | 
| 610 610 | 
             
                    loading_bar_status (bool): Loading bar (optional). Default = True.
         | 
| 611 611 |  | 
| 612 | 
            -
                    show_metrics (bool):  | 
| 612 | 
            +
                    show_metrics (bool): Visualize metrics ? (optional). Default = False.
         | 
| 613 613 |  | 
| 614 | 
            -
                    dtype (cupy.dtype): Data type for the arrays.  | 
| 614 | 
            +
                    dtype (cupy.dtype): Data type for the arrays. cp.float32 by default. Example: cp.float64 or cp.float16. [fp32 for balanced devices, fp64 for strong devices, fp16 for weak devices: not reccomended!] (optional)
         | 
| 615 615 |  | 
| 616 616 | 
             
                Returns:
         | 
| 617 617 | 
             
                    tuple: Model (list).
         | 
| @@ -647,10 +647,8 @@ def evaluate( | |
| 647 647 | 
             
                    Input = x_test[inpIndex].ravel()
         | 
| 648 648 | 
             
                    neural_layer = Input
         | 
| 649 649 |  | 
| 650 | 
            -
                    # Feedforward işlemi
         | 
| 651 650 | 
             
                    neural_layer = feed_forward(neural_layer, cp.copy(W), is_training=False, Class='?', activation_potentiation=activation_potentiation)
         | 
| 652 651 |  | 
| 653 | 
            -
                    # Olasılıkları ve tahminleri hesapla
         | 
| 654 652 | 
             
                    predict_probabilitys[inpIndex] = Softmax(neural_layer)
         | 
| 655 653 |  | 
| 656 654 | 
             
                    RealOutput = cp.argmax(y_test[inpIndex])
         | 
| @@ -674,4 +672,4 @@ def evaluate( | |
| 674 672 | 
             
                if show_metrics:
         | 
| 675 673 | 
             
                    plot_evaluate(x_test, y_test, predict_classes, acc_list, W=cp.copy(W), activation_potentiation=activation_potentiation)
         | 
| 676 674 |  | 
| 677 | 
            -
                return W, predict_classes, acc_list[-1], None, None, predict_probabilitys
         | 
| 675 | 
            +
                return W, predict_classes, acc_list[-1], None, None, predict_probabilitys
         | 
| @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            Metadata-Version: 2.1
         | 
| 2 2 | 
             
            Name: pyerualjetwork
         | 
| 3 | 
            -
            Version: 4.0. | 
| 3 | 
            +
            Version: 4.0.6
         | 
| 4 4 | 
             
            Summary: PyerualJetwork is a machine learning library written in Python for professionals, incorporating advanced, unique, new, and modern techniques.
         | 
| 5 5 | 
             
            Author: Hasan Can Beydili
         | 
| 6 6 | 
             
            Author-email: tchasancan@gmail.com
         | 
| 7 7 | 
             
            Keywords: model evaluation,classification,potentiation learning artificial neural networks,NEAT,genetic algorithms,reinforcement learning,neural networks
         | 
| 8 8 | 
             
            Description-Content-Type: text/markdown
         | 
| 9 9 |  | 
| 10 | 
            -
            # PyerualJetwork [](https://socket.dev/pypi/package/pyerualjetwork/overview/4.0.6/tar-gz) [](https://www.codefactor.io/repository/github/hcb06/pyerualjetwork) [](https://pepy.tech/projects/anaplan) + [](https://pepy.tech/projects/pyerualjetwork) [](https://pepy.tech/projects/pyerualjetwork) [](https://pepy.tech/projects/pyerualjetwork) [](https://pypi.org/project/pyerualjetwork/)
         | 
| 11 11 |  | 
| 12 12 | 
             
            Note: anaplan old name of pyerualjetwork
         | 
| 13 13 |  | 
| @@ -1,8 +1,8 @@ | |
| 1 | 
            -
            pyerualjetwork/__init__.py,sha256 | 
| 2 | 
            -
            pyerualjetwork/activation_functions.py,sha256= | 
| 3 | 
            -
            pyerualjetwork/activation_functions_cuda.py,sha256= | 
| 4 | 
            -
            pyerualjetwork/data_operations.py,sha256= | 
| 5 | 
            -
            pyerualjetwork/data_operations_cuda.py,sha256= | 
| 1 | 
            +
            pyerualjetwork/__init__.py,sha256=-LtEvQHZJBa1NlftOFTJPxgnQ0IJIgtVENLXoISrnQY,2542
         | 
| 2 | 
            +
            pyerualjetwork/activation_functions.py,sha256=UeuuagJWcSoFfmwikDU7O8ph--oySnWDJNqKbEh4SlE,12043
         | 
| 3 | 
            +
            pyerualjetwork/activation_functions_cuda.py,sha256=5F49gKkiRngo0hAaS1KfarxQ7wEyub13WAX_apxf8j8,12069
         | 
| 4 | 
            +
            pyerualjetwork/data_operations.py,sha256=rnOYLLK3YnRdWpEsEQABU0RE950lQQI7971eBLBpqOQ,16536
         | 
| 5 | 
            +
            pyerualjetwork/data_operations_cuda.py,sha256=hh51PQORfQicWruu9Bo-HAJW56lQkoG2QZOBoTjFGkw,17175
         | 
| 6 6 | 
             
            pyerualjetwork/help.py,sha256=pZs7hIhgFkovGLle97d9Qu9m5zKhMh7-OAIphIoSxBg,830
         | 
| 7 7 | 
             
            pyerualjetwork/loss_functions.py,sha256=6PyBI232SQRGuFnG3LDGvnv_PUdWzT2_2mUODJiejGI,618
         | 
| 8 8 | 
             
            pyerualjetwork/loss_functions_cuda.py,sha256=C93IZJcrOpT6HMK9x1O4AHJWXYTkN5WZiqdssPbvAPk,617
         | 
| @@ -10,14 +10,14 @@ pyerualjetwork/metrics.py,sha256=q7MkhnZDRbCjFBDDfUgrl8lBYnUT_1ro1LxeBq105pI,607 | |
| 10 10 | 
             
            pyerualjetwork/metrics_cuda.py,sha256=TCwn5Z_4jQjqPCURX_xtcz9cjsYVzlahgKDA-qCgpU4,5072
         | 
| 11 11 | 
             
            pyerualjetwork/model_operations.py,sha256=k_53BJladPm9fBWdlVpS6Uf5IQzpNlJWLH746DXGq_M,13036
         | 
| 12 12 | 
             
            pyerualjetwork/model_operations_cuda.py,sha256=Guo0lFaaLiAXwKmnOi8Fz_bL_p38qR46CIhGOg_V1Sw,13138
         | 
| 13 | 
            -
            pyerualjetwork/plan.py,sha256= | 
| 14 | 
            -
            pyerualjetwork/plan_cuda.py,sha256= | 
| 13 | 
            +
            pyerualjetwork/plan.py,sha256=cM02lR8SD7VaefXKVsxzxOGJsJKybGDxSifQ0fZzWd8,34300
         | 
| 14 | 
            +
            pyerualjetwork/plan_cuda.py,sha256=JF2LK5BgDZAQb3LuPDCyz8G7ICEvEg8BWezeZdw8X-4,33920
         | 
| 15 15 | 
             
            pyerualjetwork/planeat.py,sha256=8cwWboJtXgFTKq6nFl1T9McbLDmBquKUr12y168PmcM,39513
         | 
| 16 16 | 
             
            pyerualjetwork/planeat_cuda.py,sha256=boN-HFwm_D9cT1z0eAR8zgkiD_XOg-J2T2jNFvZweG4,39570
         | 
| 17 17 | 
             
            pyerualjetwork/ui.py,sha256=wu2BhU1k-w3Kcho5Jtq4SEKe68ftaUeRGneUOSCVDjU,575
         | 
| 18 18 | 
             
            pyerualjetwork/visualizations.py,sha256=DvbiQGlvlKNAgBJ3O3ukAi6uxSheha9SRFh5YX7ZxIA,26678
         | 
| 19 19 | 
             
            pyerualjetwork/visualizations_cuda.py,sha256=dA0u85ZIyKqjtoSJ6p3EbEpJs4V4vS5W5ftR6eif8yg,26713
         | 
| 20 | 
            -
            pyerualjetwork-4.0. | 
| 21 | 
            -
            pyerualjetwork-4.0. | 
| 22 | 
            -
            pyerualjetwork-4.0. | 
| 23 | 
            -
            pyerualjetwork-4.0. | 
| 20 | 
            +
            pyerualjetwork-4.0.6.dist-info/METADATA,sha256=MAGihGi3dJ2cKp14b8kDFGs3-d6nVHBVckfqYs8Stq8,6357
         | 
| 21 | 
            +
            pyerualjetwork-4.0.6.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
         | 
| 22 | 
            +
            pyerualjetwork-4.0.6.dist-info/top_level.txt,sha256=BRyt62U_r3ZmJpj-wXNOoA345Bzamrj6RbaWsyW4tRg,15
         | 
| 23 | 
            +
            pyerualjetwork-4.0.6.dist-info/RECORD,,
         | 
| 
            File without changes
         | 
| 
            File without changes
         |