因此,我尝试按照本教程使用 Pytorch 编写聊天机器人。
代码:(最小的,可重复的)
tags = []
for intent in intents['intents']:
tag = intent['tag']
tags.append(tag)
tags = sorted(set(tags))
X_train = []
X_train = np.array(X_train)
class ChatDataset(Dataset):
def __init__(self):
self.n_sample = len(X_train)
self.x_data = X_train
#Hyperparameter
batch_size = 8
hidden_size = 47
output_size = len(tags)
input_size = len(X_train[0])
learning_rate = 0.001
num_epochs = 1000
dataset = ChatDataset()
train_loader = DataLoader(dataset=dataset, batch_size=batch_size, shuffle=True, num_workers=0)
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') # using gpu
model = NeuralNet(input_size, hidden_size, output_size).to(device)
# …Run Code Online (Sandbox Code Playgroud) 我使用 Colab 环境使用 PyTorch 训练了自定义模型。我成功地将训练好的模型保存到 Google Drive,名称为model_final.pth. 我想转换model_final.pth为model_final.pt以便它可以在移动设备上使用。
我用来训练模型的代码如下:
from detectron2.engine import DefaultTrainer
cfg = get_cfg()
cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"))
cfg.DATASETS.TRAIN = ("mouse_train",)
cfg.DATASETS.TEST = ()
cfg.DATALOADER.NUM_WORKERS = 2
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml")
cfg.SOLVER.IMS_PER_BATCH = 2
cfg.SOLVER.BASE_LR = 0.00025
cfg.SOLVER.MAX_ITER = 1000
cfg.SOLVER.STEPS = []
cfg.MODEL.ROI_HEADS.BATCH_SIZE_PER_IMAGE = 512
cfg.MODEL.ROI_HEADS.NUM_CLASSES = 1
cfg.OUTPUT_DIR="drive/Detectron2/"
os.makedirs(cfg.OUTPUT_DIR, exist_ok=True)
trainer = DefaultTrainer(cfg)
trainer.resume_or_load(resume=False)
trainer.train()
Run Code Online (Sandbox Code Playgroud)
我用来转换模型的代码如下:
from detectron2.modeling import build_model
import torch
import torchvision
print("cfg.MODEL.WEIGHTS: ",cfg.MODEL.WEIGHTS) ## RETURNS : cfg.MODEL.WEIGHTS: drive/Detectron2/model_final.pth
model = build_model(cfg) …Run Code Online (Sandbox Code Playgroud)