Skip to main content

Keras model of a Self-Organizing Fuzzy Network

Project description

sofenn: Self-Organizing Fuzzy Neural Network

Welcome to sofenn (sounds like soften)!

This package is a Keras/TensorFlow implementation of a Self-Organizing Fuzzy Neural Network. The sofenn framework consists of two models:
(1) Fuzzy Network - Underlying fuzzy network whose parameters are optimized during training
(2) Self-Organizer - Metamodel that optimizes the architecture of the Fuzzy Network

FuzzyNetwork

Underlying neural network model that contains parameters to be optimized during training

FuzzySelfOrganizer

Metamodel to optimize the architecture of underlying fuzzy network

Installation

You can install the package using pip:

pip install sofenn

Usage

Demo notebooks available on Github.

Importing the model and self-organizer:

from sofenn import FuzzyNetwork, FuzzySelfOrganizer

# initialize model separate, and attach to self-organizer
model = FuzzyNetwork(input_shape, **_init_params)
sofnn = FuzzySelfOrganizer(model=model)
sofnn.self_organize(x, y)

# initialize sofnn directly
sofnn = FuzzySelfOrganizer(input_shape, **_init_params)
sofnn.self_organize(x, y)

Model Description

The model is implemented per the description in:

'An on-line algorithm for creating self-organizing fuzzy neural networks'
Leng, Prasad, McGinnity (2004)

alt text

Fuzzy Neural Network Architecture

Credit: Leng, Prasad, McGinnity (2004)

Layers

Inputs Layer (0)

Input layer of network

  • input :
    • shape: (*, features)

Fuzzy Layer (1)

Radial (Ellipsoidal) Basis Function Layer

  • Each neuron represents "if-part" or premise of a fuzzy rule

  • Individual Membership Functions (MF) are applied to each feature for each neuron

  • Output is product of Membership Functions

  • Each MF is a Gaussian function:

    • for i features and j neurons:

    • = ith MF of jth neuron

    • = center of ith MF of jth neuron

    • = width of ith MF of jth neuron

  • output for Fuzzy Layer is:

  • input :

    • shape: (*, features)
  • output :

    • shape: (*, neurons)

alt text

Information flow of r features within neuron j

Credit: Leng, Prasad, McGinnity (2004)

Normalize Layer (2)

Normalization Layer

  • Output of each neuron is normalized by total output from the previous layer

  • Number of outputs equal to the previous layer (# of neurons)

  • Output for Normalize Layer is:

    = output of Fuzzy Layer neuron j

  • input :

    • shape : (*, neurons)
  • output :

    • shape : (*, neurons)

Weighted Layer (3)

Weighting of ith MF of each feature

  • Yields the "consequence" of the jth fuzzy rule of the fuzzy model

  • Each neuron has two inputs:

    • = output of previous related neuron
    • = weighted bias
  • with:

    = number of original input features

    = output of jth neuron from normalize layer

  • output for weighted layer is:

  • inputs :

    • shape: [(*, 1+features), (*, neurons)]
  • output :

    • shape: (*, neurons)

Output Layer (4)

Final Output

  • Unweighted sum of each output of the previous layer ()

  • Provide activation function to layer

  • Function choice determines output shape (e.g., linear vs. softmax)

  • Output for fuzzy layer is:

    for u neurons

  • Provide activation function to layer (default: linear)

  • Activation function determines output dimensions

Examples

Regression output:

  • input :
    • shape: (*, neurons)
  • output :
    • shape: (*,)

Softmax classification output:

  • input :
    • shape: (*, )
  • output :
    • shape: (*, classes)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sofenn-0.1.2.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sofenn-0.1.2-py3-none-any.whl (4.3 kB view details)

Uploaded Python 3

File details

Details for the file sofenn-0.1.2.tar.gz.

File metadata

  • Download URL: sofenn-0.1.2.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for sofenn-0.1.2.tar.gz
Algorithm Hash digest
SHA256 d06f43f4beed962ff4ce869937e2900c08f8840f9ccf6c84124957106a1a9212
MD5 9b198325c33f81a0beeffbe7f077e3d7
BLAKE2b-256 df5f97fc3c218e0a7293e98657acb2886d8ead5fcabb74d5dfca9ce33863264f

See more details on using hashes here.

File details

Details for the file sofenn-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: sofenn-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 4.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for sofenn-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e39bf9cf6e60ecf44fdc6314bde62df5e4f25539a2df6e99a4fd54852c0f3e18
MD5 33fd2e5610d1a87be75596e5e065fb07
BLAKE2b-256 5657d6d5dac473d806a5a21ccd82446a51f9b538d6bf33022cfc4d962b37f7d4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page