view models/model_5.py @ 3:302332b914ef draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/VirHunter commit 58587e05f604590c70550e13fc51b7425e916ed4
author iuc
date Sat, 14 Jan 2023 21:08:33 +0000
parents 457fd8fd681a
children
line wrap: on
line source

from tensorflow.keras import layers, models


def launch(input_layer, hidden_layers):
    output = input_layer
    for hidden_layer in hidden_layers:
        output = hidden_layer(output)
    return output


def model(length, kernel_size=5, filters=256, dense_ns=256):
    forward_input = layers.Input(shape=(length, 4))
    reverse_input = layers.Input(shape=(length, 4))
    hidden_layers = [
        layers.Conv1D(filters=filters, kernel_size=kernel_size),
        layers.LeakyReLU(alpha=0.1),
        layers.GlobalMaxPooling1D(),
        layers.Dropout(0.1),
    ]
    forward_output = launch(forward_input, hidden_layers)
    reverse_output = launch(reverse_input, hidden_layers)
    output = layers.Concatenate()([forward_output, reverse_output])
    output = layers.Dense(dense_ns, activation='relu')(output)
    output = layers.Dropout(0.1)(output)
    # output = layers.Dense(64, activation='relu')(output)
    # output = layers.Dropout(0.1)(output)
    output = layers.Dense(3, activation='softmax')(output)
    model_ = models.Model(inputs=[forward_input, reverse_input], outputs=output)
    model_.compile(optimizer="adam", loss='categorical_crossentropy', metrics='accuracy')
    return model_


# def model(length, kernel_size=5, filters=256, dense_ns=512):
#     forward_input = layers.Input(shape=(length, 4))
#     reverse_input = layers.Input(shape=(length, 4))
#     hidden_layers = [
#         layers.Conv1D(filters=filters, kernel_size=kernel_size),
#         layers.MaxPool1D(pool_size=50, strides=25),
#         layers.LSTM(32),
#     ]
#     forward_output = launch(forward_input, hidden_layers)
#     reverse_output = launch(reverse_input, hidden_layers)
#     output = layers.Concatenate()([forward_output, reverse_output])
#     # output = layers.Dense(64, activation='relu')(output)
#     output = layers.Dropout(0.1)(output)
#     output = layers.Dense(3, activation='softmax')(output)
#     model_ = models.Model(inputs=[forward_input, reverse_input], outputs=output)
#     model_.compile(optimizer="adam", loss='categorical_crossentropy', metrics='accuracy')
#     return model_