Add an evaluate_model()
function that computes an evaluation metric for the trained model. The save_model()
function still saves the model to a file using torch.save()
. The upload_to_sharepoint()
function has been updated to upload both the model file and the evaluation metrics file to the specified target folder in the SharePoint Online document library.
import os
import torch
from shareplum import Site
from shareplum import Office365
import requests
# SharePoint Online credentials and site information
username = 'your_username'
password = 'your_password'
site_url = 'https://your_sharepoint_site_url'
document_library = 'Documents'
# Training a PyTorch model
def train_model():
# Define your model and training code here
# For simplicity, let's assume we have a basic model and training loop
model = torch.nn.Linear(10, 1)
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
criterion = torch.nn.MSELoss()
for epoch in range(10):
# Training code goes here
pass
return model
# Evaluate the model
def evaluate_model(model):
# Define your evaluation code here
# For simplicity, let's assume we have a basic evaluation metric
accuracy = 0.85
return accuracy
# Save the trained model
def save_model(model, filename):
torch.save(model.state_dict(), filename)
# Upload the model file and evaluation metrics to SharePoint Online
def upload_to_sharepoint(model_filename, metrics_filename, target_folder):
with Office365(site_url, username=username, password=password) as auth:
site = Site(site_url, auth=auth)
folder = site.Folder(f'{document_library}/{target_folder}')
with open(model_filename, 'rb') as model_file:
folder.upload_file(model_file, os.path.basename(model_filename))
with open(metrics_filename, 'rb') as metrics_file:
folder.upload_file(metrics_file, os.path.basename(metrics_filename))
print(f"Model and metrics uploaded to SharePoint Online.")
# Main script
if __name__ == '__main__':
# Train the model
trained_model = train_model()
# Evaluate the model
evaluation_accuracy = evaluate_model(trained_model)
# Save the model and evaluation metrics to files
model_filename = 'trained_model.pt'
metrics_filename = 'evaluation_metrics.txt'
save_model(trained_model, model_filename)
with open(metrics_filename, 'w') as metrics_file:
metrics_file.write(f"Accuracy: {evaluation_accuracy}")
# Upload the model file and evaluation metrics to SharePoint Online
target_folder = 'ML_Models'
upload_to_sharepoint(model_filename, metrics_filename, target_folder)