Spaces:
Sleeping
Sleeping
| # -*- coding: utf-8 -*- | |
| """ | |
| Created on Thu Mar 2 15:05:03 2023 | |
| @author: BM109X32G-10GPU-02 | |
| """ | |
| import tensorflow as tf | |
| import tensorflow.keras as keras | |
| import tensorflow.keras.layers as layers | |
| from tensorflow.keras.constraints import max_norm | |
| import pandas as pd | |
| import numpy as np | |
| import sys | |
| from dataset import predict_smiles | |
| from sklearn.metrics import r2_score,roc_auc_score | |
| from model import PredictModel,BertModel | |
| import os | |
| os.environ['TF_CPP_MIN_LOG_LEVEL']='2' | |
| os.environ["TF_FORCE_GPU_ALLOW_GROWTH"] = "true" | |
| def main(smiles): | |
| keras.backend.clear_session() | |
| os.environ['CUDA_VISIBLE_DEVICES'] = "-1" | |
| small = {'name': 'Small', 'num_layers': 3, 'num_heads': 4, 'd_model': 128, 'path': 'small_weights','addH':True} | |
| medium = {'name': 'Medium', 'num_layers': 6, 'num_heads': 8, 'd_model': 256, 'path': 'medium_weights2','addH':True} | |
| medium3 = {'name': 'Medium', 'num_layers': 8, 'num_heads': 8, 'd_model': 256, 'path': 'medium_weights2', | |
| 'addH': True} | |
| large = {'name': 'Large', 'num_layers': 12, 'num_heads': 12, 'd_model': 576, 'path': 'large_weights','addH':True} | |
| medium_without_H = {'name': 'Medium', 'num_layers': 6, 'num_heads': 8, 'd_model': 256, 'path': 'weights_without_H','addH':False} | |
| medium_without_pretrain = {'name': 'Medium', 'num_layers': 6, 'num_heads': 8, 'd_model': 256,'path': 'medium_without_pretraining_weights','addH':True} | |
| arch = medium3## small 3 4 128 medium: 6 6 256 large: 12 8 516 | |
| pretraining = False | |
| pretraining_str = 'pretraining' if pretraining else '' | |
| trained_epoch = 80 | |
| task = 'data' | |
| seed = 14 | |
| num_layers = arch['num_layers'] | |
| num_heads = arch['num_heads'] | |
| d_model = arch['d_model'] | |
| addH = arch['addH'] | |
| dff = d_model * 2 | |
| vocab_size =60 | |
| dropout_rate = 0.1 | |
| tf.random.set_seed(seed=seed) | |
| graph_dataset = predict_smiles(smiles, addH=addH) | |
| # graph_dataset = Graph_Regression_Dataset('data/reg/{}.csv', smiles_field='SMILES', | |
| # label_field='PCE',addH=addH) | |
| test_dataset = graph_dataset.get_data() | |
| #value_range = graph_dataset.value_range() | |
| x, adjoin_matrix, y = next(iter(test_dataset.take(1))) | |
| seq = tf.cast(tf.math.equal(x, 0), tf.float32) | |
| mask = seq[:, tf.newaxis, tf.newaxis, :] | |
| model = PredictModel(num_layers=num_layers, d_model=d_model, dff=dff, num_heads=num_heads, vocab_size=vocab_size, | |
| dense_dropout=0.2) | |
| preds = model(x, mask=mask, adjoin_matrix=adjoin_matrix, training=False) | |
| model.load_weights('{}.h5'.format('15data')) | |
| class CustomSchedule(tf.keras.optimizers.schedules.LearningRateSchedule): | |
| def __init__(self, d_model, total_steps=4000): | |
| super(CustomSchedule, self).__init__() | |
| self.d_model = d_model | |
| self.d_model = tf.cast(self.d_model, tf.float32) | |
| self.total_step = total_steps | |
| self.warmup_steps = total_steps*0.10 | |
| def __call__(self, step): | |
| arg1 = step/self.warmup_steps | |
| arg2 = 1-(step-self.warmup_steps)/(self.total_step-self.warmup_steps) | |
| return 10e-5* tf.math.minimum(arg1, arg2) | |
| steps_per_epoch = len(test_dataset) | |
| value_range = 1 | |
| y_true = [] | |
| y_preds = [] | |
| for x, adjoin_matrix, y in test_dataset: | |
| seq = tf.cast(tf.math.equal(x, 0), tf.float32) | |
| mask = seq[:, tf.newaxis, tf.newaxis, :] | |
| preds = model(x, mask=mask, adjoin_matrix=adjoin_matrix, training=False) | |
| y_true.append(y.numpy()) | |
| y_preds.append(preds.numpy()) | |
| y_true = np.concatenate(y_true, axis=0).reshape(-1) | |
| y_preds = np.concatenate(y_preds, axis=0).reshape(-1) | |
| return y_preds | |