Spaces:
Running
Running
| '''Boxes for defining PyTorch models.''' | |
| from . import ops | |
| from .ops import Parameter as P | |
| ENV = 'PyTorch model' | |
| def reg(name, inputs=[], outputs=None, params=[]): | |
| if outputs is None: | |
| outputs = inputs | |
| return ops.register_passive_op( | |
| ENV, name, | |
| inputs=[ops.Input(name=name, position='bottom', type='tensor') for name in inputs], | |
| outputs=[ops.Output(name=name, position='top', type='tensor') for name in outputs], | |
| params=params) | |
| reg('Input: features', outputs=['x']) | |
| reg('Input: graph edges', outputs=['edges']) | |
| reg('Input: label', outputs=['y']) | |
| reg('Input: positive sample', outputs=['x_pos']) | |
| reg('Input: negative sample', outputs=['x_neg']) | |
| reg('Attention', inputs=['q', 'k', 'v'], outputs=['x']) | |
| reg('LayerNorm', inputs=['x']) | |
| reg('Dropout', inputs=['x'], params=[P.basic('p', 0.5)]) | |
| reg('Linear', inputs=['x'], params=[P.basic('output_dim', 'same')]) | |
| reg('Graph conv', inputs=['x', 'edges'], outputs=['x'], | |
| params=[P.options('type', ['GCNConv', 'GATConv', 'GATv2Conv', 'SAGEConv'])]) | |
| reg('Activation', inputs=['x'], | |
| params=[P.options('type', ['ReLU', 'LeakyReLU', 'Tanh', 'Mish'])]) | |
| reg('Supervised loss', inputs=['x', 'y'], outputs=['loss']) | |
| reg('Triplet loss', inputs=['x', 'x_pos', 'x_neg'], outputs=['loss']) | |
| reg('Optimizer', inputs=['loss'], outputs=[], | |
| params=[ | |
| P.options('type', ['AdamW', 'Adafactor', 'Adagrad', 'SGD', 'Lion', 'Paged AdamW', 'Galore AdamW']), | |
| P.basic('lr', 0.001)]) | |
| ops.register_area(ENV, 'Repeat', params=[ops.Parameter.basic('times', 1, int)]) | |