From 671176c6d058783dc528f15322d9671d1194322e Mon Sep 17 00:00:00 2001 From: newbie Date: Sun, 10 Nov 2024 11:37:54 +0800 Subject: [PATCH] new change --- Qfunctions/saveToxlsx.py | 5 - Qfunctions/test.py | 17 -- Qtorch/Models/QSVM.py | 14 -- Qtorch/Models/QSVM_BRF.py | 74 ------ SVM | 1 - catplus => Scripts/catplus | 0 test.py => Scripts/test.py | 0 main.py | 229 ------------------ remake/.vscode/launch.json | 15 -- remake/Qtorch/Functions/__init__.py | 5 - .../__pycache__/__init__.cpython-312.pyc | Bin 331 -> 0 bytes .../__pycache__/dataLoader.cpython-312.pyc | Bin 4540 -> 0 bytes .../__pycache__/dataSplitter.cpython-312.pyc | Bin 1717 -> 0 bytes .../__pycache__/resSaver.cpython-312.pyc | Bin 843 -> 0 bytes remake/Qtorch/Functions/dataLoader.py | 91 ------- remake/Qtorch/Functions/dataSplitter.py | 37 --- remake/Qtorch/Functions/resSaver.py | 15 -- remake/Qtorch/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 147 -> 0 bytes remake/Qtorch/models/QSVM.py | 21 -- remake/Qtorch/models/Qnn.py | 72 ------ remake/Qtorch/models/Qsvm_brf.py | 114 --------- remake/Qtorch/models/__init__.py | 3 - .../models/__pycache__/QSVM.cpython-312.pyc | Bin 1149 -> 0 bytes .../models/__pycache__/Qnn.cpython-312.pyc | Bin 3855 -> 0 bytes .../__pycache__/Qsvm_brf.cpython-312.pyc | Bin 8484 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 215 -> 0 bytes remake/README.md | 0 remake/main.py | 23 -- 29 files changed, 736 deletions(-) delete mode 100644 Qfunctions/test.py delete mode 100644 Qtorch/Models/QSVM.py delete mode 100644 Qtorch/Models/QSVM_BRF.py delete mode 160000 SVM rename catplus => Scripts/catplus (100%) rename test.py => Scripts/test.py (100%) delete mode 100644 remake/.vscode/launch.json delete mode 100644 remake/Qtorch/Functions/__init__.py delete mode 100644 remake/Qtorch/Functions/__pycache__/__init__.cpython-312.pyc delete mode 100644 remake/Qtorch/Functions/__pycache__/dataLoader.cpython-312.pyc delete mode 100644 remake/Qtorch/Functions/__pycache__/dataSplitter.cpython-312.pyc delete mode 100644 remake/Qtorch/Functions/__pycache__/resSaver.cpython-312.pyc delete mode 100644 remake/Qtorch/Functions/dataLoader.py delete mode 100644 remake/Qtorch/Functions/dataSplitter.py delete mode 100644 remake/Qtorch/Functions/resSaver.py delete mode 100644 remake/Qtorch/__init__.py delete mode 100644 remake/Qtorch/__pycache__/__init__.cpython-312.pyc delete mode 100644 remake/Qtorch/models/QSVM.py delete mode 100644 remake/Qtorch/models/Qnn.py delete mode 100644 remake/Qtorch/models/Qsvm_brf.py delete mode 100644 remake/Qtorch/models/__init__.py delete mode 100644 remake/Qtorch/models/__pycache__/QSVM.cpython-312.pyc delete mode 100644 remake/Qtorch/models/__pycache__/Qnn.cpython-312.pyc delete mode 100644 remake/Qtorch/models/__pycache__/Qsvm_brf.cpython-312.pyc delete mode 100644 remake/Qtorch/models/__pycache__/__init__.cpython-312.pyc delete mode 100644 remake/README.md delete mode 100644 remake/main.py diff --git a/Qfunctions/saveToxlsx.py b/Qfunctions/saveToxlsx.py index 9f8e5b4..efacddb 100644 --- a/Qfunctions/saveToxlsx.py +++ b/Qfunctions/saveToxlsx.py @@ -5,9 +5,4 @@ def save_to_xlsx(project_name, file_name, data): data.to_excel(f'Result/{project_name}/{file_name}.xlsx', index=True) print("Save successed to " + f'Result/{project_name}/{file_name}.xlsx') - - # for filename,data in save_maps.items(): - # data.to_excel(f'Result/{project_name}/{filename}.xlsx', index=True) - # print("Save successed to " + f'Result/{project_name}/{filename}.xlsx') - # print('Save to xlsx done!') return diff --git a/Qfunctions/test.py b/Qfunctions/test.py deleted file mode 100644 index d4c26dd..0000000 --- a/Qfunctions/test.py +++ /dev/null @@ -1,17 +0,0 @@ -import time -from sklearn.neural_network import MLPClassifier -from sklearn.metrics import classification_report, accuracy_score - -def MLP(X_train, X_test, y_train, y_test): - start_time = time.time() - # 训练 MLP 分类器 - mlp = MLPClassifier(hidden_layer_sizes=(100,), max_iter=300, random_state=42) - mlp.fit(X_train, y_train) - y_pred = mlp.predict(X_test) - end_time = time.time() - # 打印训练时间 - print("Training Time:", end_time - start_time, "seconds") - # 评估模型 - print("Accuracy:", accuracy_score(y_test, y_pred)) - print("Classification Report:") - print(classification_report(y_test, y_pred)) \ No newline at end of file diff --git a/Qtorch/Models/QSVM.py b/Qtorch/Models/QSVM.py deleted file mode 100644 index b0c5b35..0000000 --- a/Qtorch/Models/QSVM.py +++ /dev/null @@ -1,14 +0,0 @@ -from Qtorch.Models.Qnn import Qnn -from abc import ABC, abstractmethod - -class QSVM(Qnn, ABC): - def __init__(self, data, labels=None, test_size=0.2, random_state=None): - super().__init__(data, labels, test_size, random_state) - self.result.update({ - "pca_2d" : None, - "pca_3d" : None - }) - - @abstractmethod - def train_model(self, train_loader, test_loader, epochs): - return super().train_model(train_loader, test_loader, epochs) diff --git a/Qtorch/Models/QSVM_BRF.py b/Qtorch/Models/QSVM_BRF.py deleted file mode 100644 index 9e42baf..0000000 --- a/Qtorch/Models/QSVM_BRF.py +++ /dev/null @@ -1,74 +0,0 @@ -import torch -import torch.nn as nn -import torch.optim as optim - -from Qtorch.Models.QSVM import QSVM as svm - -class QSVM_BRF(svm): - def __init__(self, data, labels=None, test_size=0.2, random_state=None, - gamma=1.0, C=100, batch_size = 64, learning_rate=0.01): - super().__init__(data, labels, test_size, random_state) - self.gamma, self.C, self.n_features = gamma, C, data.shape[0] - 1 - self.support_vectors = torch.cat([batch[0] for batch in self.train_loader]) - self.alpha = nn.Parameter(torch.zeros(self.support_vectors.shape[0])) - self.b = nn.Parameter(torch.zeros(1)) - self.batch_size = batch_size - self.learning_rate = learning_rate - self.optimizer = optim.SGD(self.parameters(), lr=self.learning_rate) - - def rbf_kernel(self, X, Y): - X_norm = (X**2).sum(1).view(-1, 1) - Y_norm = (Y**2).sum(1).view(1, -1) - dist = X_norm + Y_norm - 2.0 * torch.mm(X, Y.t()) - return torch.exp(-self.gamma * dist) - - def forward(self, X): - K = self.rbf_kernel(X, self.support_vectors) - return torch.mm(K, self.alpha.unsqueeze(1)).squeeze() + self.b - - def hinge_loss(self, outputs, targets): - return torch.mean(torch.clamp(1 - outputs * targets, min=0)) - - def regularization(self): - return 0.5 * (self.alpha ** 2).sum() - - def train_model(self, epoch_times=100, learning_rate=0.01): - - losses, train_accs, test_accs = [], [], [] - - for epoch in range(epoch_times): - self.train() - epoch_loss, correct_train, total_train = 0, 0, 0 - - for batch_X, batch_y in self.train_loader: - - self.optimizer.zero_grad() - outputs = self(batch_X) - loss = self.hinge_loss(outputs, batch_y) + self.C * self.regularization() - loss.backward() - self.optimizer.step() - - epoch_loss += loss.item() - predicted = torch.sign(outputs) - correct_train += (predicted == batch_y).sum().item() - total_train += batch_y.size(0) - - train_acc = correct_train / total_train - test_acc = self.evaluate() - - losses.append(epoch_loss / len(self.train_loader)) - train_accs.append(train_acc) - test_accs.append(test_acc) - print(f'Epoch [{epoch+1}/{epoch_times}], Loss: {losses[-1]:.4f}, Train Acc: {train_acc:.4f}, Test Acc: {test_acc:.4f}') - - def evaluate(self): - self.eval() - correct = 0 - total = 0 - with torch.no_grad(): - for batch_X, batch_y in self.test_loader: - outputs = self(batch_X) - predicted = torch.sign(outputs) - correct += (predicted == batch_y).sum().item() - total += batch_y.size(0) - return correct / total diff --git a/SVM b/SVM deleted file mode 160000 index 3aec5f2..0000000 --- a/SVM +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3aec5f294e817679e61b0833d4f750b9f118cfbc diff --git a/catplus b/Scripts/catplus similarity index 100% rename from catplus rename to Scripts/catplus diff --git a/test.py b/Scripts/test.py similarity index 100% rename from test.py rename to Scripts/test.py diff --git a/main.py b/main.py index c174de5..6d62518 100644 --- a/main.py +++ b/main.py @@ -33,100 +33,6 @@ def main(): df_pca2d.to_excel(os.path.join(folder, 'pca_2d_points_with_labels.xlsx'), index=False) df_pca3d.to_excel(os.path.join(folder, 'pca_3d_points_with_labels.xlsx'), index=False) - """ clf = SVC(kernel='rbf', C=1.0) - from sklearn.model_selection import RandomizedSearchCV - from scipy.stats import uniform - - # 定义参数分布 - param_dist = {'C': uniform(0.1, 100)} - - # 随机搜索 - random_search = RandomizedSearchCV(SVC(kernel='rbf'), param_distributions=param_dist, - n_iter=20, cv=5, scoring='accuracy') - random_search.fit(X_train, y_train) - - # 获取最佳参数和模型 - best_C = random_search.best_params_['C'] - best_model = random_search.best_estimator_ - - # 评估 - y_pred = best_model.predict(X_test) - from sklearn.metrics import accuracy_score, confusion_matrix - accuracy = accuracy_score(y_test, y_pred) - - print(f"Best C: {best_C}") - print(f"Best accuracy: {accuracy}" )""" - - """ - from sklearn import svm - from sklearn.model_selection import train_test_split, learning_curve, cross_val_score - import numpy as np - import matplotlib.pyplot as plt - import seaborn as sns - - # 进行交叉验证 - cv_scores = cross_val_score(clf, X_train, y_train, cv=5) - print(f"Cross-validation scores: {cv_scores}") - print(f"Mean CV score: {cv_scores.mean():.3f} (+/- {cv_scores.std() * 2:.3f})") - - - # 计算学习曲线 - train_sizes, train_scores, test_scores = learning_curve( - clf, X_train, y_train, cv=5, n_jobs=-1, - train_sizes=np.linspace(.1, 1.0, 5)) - - train_scores_mean = np.mean(train_scores, axis=1) - train_scores_std = np.std(train_scores, axis=1) - test_scores_mean = np.mean(test_scores, axis=1) - test_scores_std = np.std(test_scores, axis=1) - - # 绘制学习曲线 - plt.figure(figsize=(10, 6)) - plt.title("Learning Curve") - plt.xlabel("Training examples") - plt.ylabel("Score") - plt.grid() - plt.fill_between(train_sizes, train_scores_mean - train_scores_std, - train_scores_mean + train_scores_std, alpha=0.1, color="r") - plt.fill_between(train_sizes, test_scores_mean - test_scores_std, - test_scores_mean + test_scores_std, alpha=0.1, color="g") - plt.plot(train_sizes, train_scores_mean, 'o-', color="r", label="Training score") - plt.plot(train_sizes, test_scores_mean, 'o-', color="g", label="Cross-validation score") - plt.legend(loc="best") - plt.show() - - # 在全部训练数据上训练模型 - clf.fit(X_train, y_train) - - # 预测 - y_pred = clf.predict(X_test) - - # 计算准确率 - accuracy = accuracy_score(y_test, y_pred) - print(f"Test Accuracy: {accuracy:.3f}") - - # 计算归一化的混淆矩阵 - cm = confusion_matrix(y_test, y_pred, normalize='true') - - # 绘制混淆矩阵 - plt.figure(figsize=(10,7)) - sns.heatmap(cm, annot=True, fmt='.2f', cmap='Blues') - plt.title('Normalized Confusion Matrix') - plt.ylabel('True label') - plt.xlabel('Predicted label') - plt.show() """ - - """ - model.fit(X_train, y_train) - y_pred = model.predict(X_test) - from sklearn.metrics import accuracy_score, confusion_matrix - accuracy = accuracy_score(y_test, y_pred) - print(f"Accuracy: {accuracy}") - - # 计算归一化的混淆矩阵 - cm = confusion_matrix(y_test, y_pred, normalize='true') - print(cm) """ - model = Qmlp( X_train=X_train, X_test=X_test, y_train=y_train, y_test= y_test, @@ -146,138 +52,3 @@ def main(): if __name__ == '__main__': main() - - - - -# from sklearn.model_selection import train_test_split -# from sklearn.preprocessing import StandardScaler -# from sklearn.svm import SVC -# from sklearn.model_selection import GridSearchCV -# from sklearn.metrics import accuracy_score, classification_report, confusion_matrix -# import pandas as pd - -# if __name__ == '__main__': - -# project_name = '20240829Letters' -# labels = None - -# data = ld(project_name, labels) - - - - - # svm = SVM( - # data=data, - # labels=labels - # ) - - # svm.fit() - - # X, y = data.iloc[:, :-1], data.iloc[:, -1] - - # # 分割数据 - # X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=None) - - # # 标准化数据 - # scaler = StandardScaler() - # X_train_scaled = scaler.fit_transform(X_train) - # X_test_scaled = scaler.transform(X_test) - - # # 创建 SVM 分类器 - # svm = SVC(kernel='rbf', random_state=42) - - # # 定义参数网格 - # param_grid = { - # 'C': [0.1, 1, 10, 100], - # 'gamma': ['scale', 'auto', 0.1, 1, 10] - # } - - # # 使用网格搜索进行超参数调优 - # grid_search = GridSearchCV(svm, param_grid, cv=5, n_jobs=-1, verbose=2) - # grid_search.fit(X_train_scaled, y_train) - - # # 打印最佳参数 - # print("Best parameters:", grid_search.best_params_) - - # # 使用最佳参数的模型 - # best_svm = grid_search.best_estimator_ - - # # 计算训练集和测试集准确率 - # y_train_pred = best_svm.predict(X_train_scaled) - # train_acc = accuracy_score(y_train, y_train_pred) - - # y_test_pred = best_svm.predict(X_test_scaled) - # test_acc = accuracy_score(y_test, y_test_pred) - - # # 在测试集上进行预测 - # y_pred = best_svm.predict(X_test_scaled) - - # # 计算准确率 - # accuracy = accuracy_score(y_test, y_pred) - # print(f"Accuracy: {accuracy}") - - # # 打印详细的分类报告 - # print(classification_report(y_test, y_pred)) - # # 计算并可视化混淆矩阵 - # cm = confusion_matrix(y_test, y_test_pred, normalize='true') - - # print(cm) - # # model = QSVM( - # # data=data, - # # labels=labels - # # ) - - # # model.fit(300) - # # model.save(project_name) - - - # # 创建一个 Excel 写入器 - # # 将分类报告转换为DataFrame - # # 获取分类报告 - - # report = classification_report(y_test, y_test_pred, output_dict=True) - - # df_report = pd.DataFrame(report).transpose() - # with pd.ExcelWriter(f'./Result/{project_name}/svm_results.xlsx') as writer: - # from sklearn.decomposition import PCA - # pca = PCA() - # X_pca = pca.fit_transform(X) - # # 创建 2D PCA 坐标的 DataFrame - # df_pca_2d = pd.DataFrame(data = X_pca[:, :2], columns = ['First Principal Component', 'Second Principal Component']) - # df_pca_2d['Label'] = y - # # 创建 3D PCA 坐标的 DataFrame - # df_pca_3d = pd.DataFrame(data = X_pca[:, :3], columns = ['First Principal Component', 'Second Principal Component', 'Third Principal Component']) - # df_pca_3d['Label'] = y - - # # 将 2D PCA 坐标写入 Excel - # df_pca_2d.to_excel(writer, sheet_name='PCA 2D Coordinates', index=False) - # df_pca_3d.to_excel(writer, sheet_name='PCA 3D Coordinates', index=False) - - - # # 将分类报告写入Excel - # df_report.to_excel(writer, sheet_name='Classification Report') - - # # 将最佳参数写入Excel - # pd.DataFrame([grid_search.best_params_]).to_excel(writer, sheet_name='Best Parameters') - - # # 如果你想保存混淆矩阵 - # from sklearn.metrics import confusion_matrix - # # 创建混淆矩阵并添加标签 - # cm = confusion_matrix(y_test, y_test_pred, normalize='true') - # df_cm = pd.DataFrame(cm, index=labels, columns=labels) - # df_cm.index.name = 'True' - # df_cm.columns.name = 'Predicted' - - # # 将混淆矩阵写入Excel - # df_cm.to_excel(writer, sheet_name='Confusion Matrix') - - # # 如果你想保存训练集和测试集的准确率 - # train_accuracy = best_svm.score(X_train_scaled, y_train) - # test_accuracy = best_svm.score(X_test_scaled, y_test) - # pd.DataFrame({ - # 'Train Accuracy': [train_accuracy], - # 'Test Accuracy': [test_accuracy] - # }).to_excel(writer, sheet_name='Accuracy') - - # print("Results have been saved to 'svm_results.xlsx'") \ No newline at end of file diff --git a/remake/.vscode/launch.json b/remake/.vscode/launch.json deleted file mode 100644 index 14b7790..0000000 --- a/remake/.vscode/launch.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "name": "Python Debugger: Current File", - "type": "debugpy", - "request": "launch", - "program": "main.py", - "console": "integratedTerminal" - } - ] -} \ No newline at end of file diff --git a/remake/Qtorch/Functions/__init__.py b/remake/Qtorch/Functions/__init__.py deleted file mode 100644 index e2eb142..0000000 --- a/remake/Qtorch/Functions/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from .dataLoader import dLoader -from .dataSplitter import dsplit -from .resSaver import save_to_xlsx - -__all__ = ['dLoader', 'dsplit', 'save_to_xlsx'] \ No newline at end of file diff --git a/remake/Qtorch/Functions/__pycache__/__init__.cpython-312.pyc b/remake/Qtorch/Functions/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 3412e26aec5c2efe49b931ede117299d5170ec21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 331 zcmXw!zfQw25XS8|f2z<-JOGF-3+4eTCd7o0P`50WRhuTlj)U!@X5E;k*N7s-s#+7314ecNV?Ps($TGIQzu4{TBWv3*! zZPPBPm73p4dgF~<)bw)IE_`EJM;U9{#xr)>_4~<88?jRI+!hcPKI0BSz6r*7gN`=n Pc!N$pbNZOs1DO8+7cE!Y diff --git a/remake/Qtorch/Functions/__pycache__/dataLoader.cpython-312.pyc b/remake/Qtorch/Functions/__pycache__/dataLoader.cpython-312.pyc deleted file mode 100644 index 257c78dbbd48d032c706e48c96118539915cd25f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4540 zcmbW4U2GKB6@cf?%>LWnU}NmoI1EX_UZ8d;KMA(u%HS9$IEG@UPzSmmc4qByW@nc> zZPTHz8OI!OYH-dDwXsJsV{ccfHmO(seK496~#ORo_g+`ncXq9 z(w~v`-n;jnd+zV~&bfarFAp>DWv(tJ{{f}Hkw5OoI)#cLrElDt)xBxKMsB?FAy2Q zAa(Q`@k+UMKBwTx48QxwWNtcrvaA8x>~AFKmP)zF-gMeKnTuS49byvf$qfvXPnfc$ro4Q z8)CA4V_mV0cW2Sboa|(n6R_HBAR9EQT#5gE_h7uBJD!Qm0GXHRyGc$2zHG?!k5t=b zZ)%3znIPsu7ta_qZtF;`TPo$IU*d21+)?^quMzyR+?b~n^NZWyNWubqJ!w%AB+(Fs zBu=Mn>l8{WRl8l>ZFPe1VA-#o`>?Wa6H*l;)=oM44 zkWLE5u}q3yrFx8=&HF#!%9ls0!pi(M5#>D%2#r zn-sLPA!Km+V?~ms9dy2SqcEnZs&GmcMs->8%=M^jjAG51ZbsB3QE%#mRd-<+w}tKk zED`F7)`YA>Z@MeCib-G7xT=r8Kuwrj`u-cpDpQ8EG?wFvCduQma*Ivt7M~G~VT&J0 zE1DJQ>+k4)_dxteM}M~!Aj^;xYz1Xa(#I5#^642>F|6p2Y{XOIcpRt4;;O7!Az2$u z$yhXGE2P5N#L2*xU(95ntHov{%MY8G5RF*a^4t4vMLb(*MeNEroeN4@VRD%E_F5I5 zk%nLrWumIald=eVBkLAYtWZ(d3cB?=Ar`qR_V=Q_c{rVtn@>*+4-YqY%5p}PMNE#i z8Otg0Bf0r|Mj9uEo4ZD}1UW^$nOrY&&*1iCCai#Dm+>ahOL(GNkmQ(W-(;$)XB%c3 zW_Qf&xcZ~Hu0rLm+@Xi{o30I98JLR{>UZB?*ON!L(VxSA4BvV4-dl%$zIkC?PwqWP z{^@7RYL?${dTVRQB`%W z=V9&U>)Q&o-+s!lzOB<`Q)p`6!>Wx}k6t@=<=C|oS5C}rpPwkycid^cd-}8Xg+8%R zb!sZO99;h(ShpCg%Xi-kZh7K^uFrx@S;fVD)B7%+nCF)wdlvXT&!5&YmG7hHPlHTN zn@*VWrws>o@t;-kB;8bZ;4MDEL#_LfU7%d<2eUlSp67tgC8n;yW}vUrp5;w`#H-8E zDItkH$4Z>UO8hx4$r9FNeWq`O_<)x_$#=`|>O(-JkegkP*P4 zlc9kMI?&JoG}y5k$D^PzxwS7KuyZ!FI!nO}`%nH;oFfI=# zq+33UWGmo6G#0{@&}@aV3`m!WleKsSbX$J1TurnhKwxkM)SXzU-|_+R)d|aoMQup7 z0*SObn$q-G0B@vvO2nrt!7)FX zU96w3zcf(@ZO-jqj;^~nHa&Lf^bF4L%hA^#GL?%%>E$f3DkF`!+B8VH#oyfYzC{-_aFy3S-qyf?_{bJNMQoK_989F=_q zWW9R-P1Yy|!z0BI*b#!v0{PrR&p3Is?Lu#Bd&mn}(Kb>d=OL1+bfhZ;k@lCo2Nsf6^%T!k7-dhet zrbd5~U9PU3JvMXf@(-rN%c1g18-DgGsX0D#{PMt5_+jPx+1N}hKalU4>-t0A?W*4& zU)=Hb;>Pwu<#!>biImfLA(3xgsBV~-mLjbSd@J4#qpW(a5w}im<;o67&XWgQ@jg#6 zNhG1OK@)W{?u~ZuSRWH(Cs*i=IVc;{$AB}TZi8F~=TOB2PV2e=5uk_APSF2fhx%T> z=R5+wF4TwnCa(_kdz|>b88sV(5GAP_^;$YZSXC742QEJ!!T^4mnS_ls;aeNEUdj@m96RL(;cE@`OVOeZhpjV5%Nf)aD{9d>z`m(o%!guY9KxwXHNpkcg<7e*tFL BRP_J= diff --git a/remake/Qtorch/Functions/__pycache__/dataSplitter.cpython-312.pyc b/remake/Qtorch/Functions/__pycache__/dataSplitter.cpython-312.pyc deleted file mode 100644 index 7e7e8305741fba9f4bdfea8b23eb0fffd6de4530..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1717 zcmbVM-D@0G6rb6ho&Cy8Yd_F6rnxEBX0hyIi4CNs8mI|^L`|TUAg+_0yV*%+XVyD+ z11mGIf`tZ^F20!fVtld^|A6`*D86J^VZ#M6U@7!XNT2$m=ib@bM2J3kVD3Hlp5Hn5 zoO6G7e$lj?1oFjJSo=|tq(Ar~mc&3gm;~i3$&^glmKyT1EOR|!CmPA+WJ6h2V4X6R zPvzxQJ6Tj8bGM?*PEul6PK9ERR=lQd(PDz>OVn^ogP2QI!^VV-yk)Fl`wge+nwTt9 zA%mf)pe5lucqH@FDU6Zq4CX-brL{Q6*a)*JoAR9mjEOsmTA~0uLFzw|F-rC2Pfq#D zTIxu!f$GaUgY$#5a~d$|V=!urfquwAnr35+pYl~d;U|Ac?hGn?ALbwvWP@Cgr}-E+ ztZc*|IW~(-d_s@`gckc9&VF`?$U>IKA#!W_AwJgDo{6=?InHJnG50SK^Zz?y-p}}1 zKj-KDbS~+_%9H6quF7BY~*Ni#Vp}3gDIBnR+(0_D39uRkY9r(VM+LNC7j_9V`x#=4ZDRs zmLkSFwu>55_^mKCI+|p-4}U2v9VJDWe2d9#rvEcXmL62a)Tk~9?y4%3zkJ|Nmy?g^>=#oJkpiY_KhH)F0-=!|8*2{A(r^;{9EAt!$1t}(_ zW}B&|xH9qr#O4)xk6`FXPo9@fjDF^H=Jzur_p%$=FDJT7-4*y=3NwYy?A~y9v3nuR zJlC1sPiwpB!d?OO3#G77y1(8lT-ng~GbirlH}c)t&-J~+*j@eM#pws~gI9ja?tWub&U~^V`!s{pHU5o_4ygjfL9SX04}P=*;cw zXZ!kisE==_ztg|f`)DdeQ$2L0r%!Y6nZ9-|)Xr_Le-ms4{qf7;_~qXCR8M;qJoBfz zbDQ(qH}8M2o4>lNTs?qFrDAen_3JGzKfkt6RN1rMZPCM01OD80#ltohof8~jXJczq z5Vwjw51K8gAvh%3_`O8NATk++;c4a?1Zvs%I+=ha|JQmaVfZsC%kpp1)bG;uC(49; HO?dnbU?I2G diff --git a/remake/Qtorch/Functions/__pycache__/resSaver.cpython-312.pyc b/remake/Qtorch/Functions/__pycache__/resSaver.cpython-312.pyc deleted file mode 100644 index 55919bb1d0770c7d6245af7a5954f1143c7fb0a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 843 zcmZ`%&1(}u6rb4-lhhPzJQYFa)+|W&U<+D`Ak>1C1pGMl5|*7wciYYGc4k(R7$F6r z7s1|IDTN#>_0a#rOB4%b_2#KJA)b12-ge^`_+Z|=kKg;fHyBsTw{JeS&M`vY zz?q1a8{>*H_7FuB2WSmZ?G;+XU2N&+0BE>+j)Toq3;gkGrS_0ioR_jOVVeZhPH`U{ zphJyn@Acz6kMk%s`uG4*^U!>$_q7e+{YUz`s=M;LP8KErTIlP*dz^R2s9Us3y-!m_ z$y4V!Bh--&kr8o1^04EwfVBL8)v|o19`JRsm{~E8Hkd1$q0?rhDkQfSNdxStMWn|_ zo+s5rFiKhxS1X{56DY7QDS`aI1dxPLgqrITo()%xosc@BwyY*y;lQ;>!2TQBD?DK$ z38ekZ!fBCpd?B0B<^{HUW~~#5j*6OoNLi;kwNkw6Y(|h`XM>l7z1Gqfn^0fcN3GxSN(?*rpl;4#H;?DSRwZS89NMRFGNN zS>0aUo!h^?e`_>TJ()i>?w(a&1(};5TCbS-F&Q-S}H9Sss~{&23mU)^-vH&1Et_0m&clYX;L?v^t}x>A%`9c zR9%0Cidgtko?}8$-Mda&5)0dlLeHG*E^L- z4d6Q|12OxT-etUOf)73mpbjNqpusKhwKec{0o!`&S7L3$HGeSFTo&u|VOZ`5NRGZ2 z^rlgLgz*HFm=7h*H`k%Ue72S;=@heM_&TEL8;I6AtgzD10=QOe%rD%#TOL$JK`s1J z++K+AoNYpcXDShPlS&shasXY{)w+7u*fvrtgDx!5`%|)%Ib}cFt6BE=w4a_czH7#&YBhzFRAp>)UJGjx=dmS)Y6VejwVJ*c32H`(pb{IXd9f9E z_eG%MOe9pqRjni9y!1l9QRgZ`_c+6OIq;O?Tv5qWB&&zBg=(WN3d`+kwOW`Hq8SKJ zhP809AVuAKAPVzQLzb(Bdc())1!C_?vn^@h9VgKS^${m(7U5tOzSzza|JmG*ed*2B zw`1?d-{1LU-`=(JPjioRpY4eqdt!HtKEF(TGP@6YCfCDQkJqX|%UsLM*RsaA1 diff --git a/remake/Qtorch/models/__pycache__/Qnn.cpython-312.pyc b/remake/Qtorch/models/__pycache__/Qnn.cpython-312.pyc deleted file mode 100644 index 46cccbad36e91655f19f39914dd4cca2f0589183..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3855 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 diff --git a/remake/Qtorch/models/__pycache__/__init__.cpython-312.pyc b/remake/Qtorch/models/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index d8dbabf71b1e6e17ebd4ac25e2cb1c669dfeeed4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 215 zcmX@j%ge<81e>Q{Ofv)0k3k$5V1hC}ivbza8B!Qh7;_kM8KM{%8B&~NwL8kq()X&JzP1P@~%*e>l zcS%hx$Vp8s%FE14*Dp%VP0UW!4=l+qO3u*F%}+_qDb|mV&&