Check
In [ ]:
Copied!
import argparse
import json
import sys
import argparse
import json
import sys
In [ ]:
Copied!
import numpy as np
import pandas as pd
from torch.utils.data import DataLoader, Dataset
from tqdm import tqdm
import torch
from torch import nn
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print(device)
import numpy as np
import pandas as pd
from torch.utils.data import DataLoader, Dataset
from tqdm import tqdm
import torch
from torch import nn
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print(device)
In [ ]:
Copied!
from model1.single import single
from model1.fusion import fusion
from model1.fusionWithCrossAttention import fusionWithCrossAttention
from func import int2cat, set_seed
from model1.single import single
from model1.fusion import fusion
from model1.fusionWithCrossAttention import fusionWithCrossAttention
from func import int2cat, set_seed
In [ ]:
Copied!
class MyDataset3(Dataset):
def __init__(self, vfeats, tfeats):
self.vfeats = vfeats
self.tfeats = tfeats
def __len__(self):
return len(self.vfeats)
def __getitem__(self, idx):
vfeat = self.vfeats[idx]
tfeat = self.tfeats[idx]
return torch.FloatTensor(vfeat), torch.FloatTensor(tfeat)
class MyDataset3(Dataset):
def __init__(self, vfeats, tfeats):
self.vfeats = vfeats
self.tfeats = tfeats
def __len__(self):
return len(self.vfeats)
def __getitem__(self, idx):
vfeat = self.vfeats[idx]
tfeat = self.tfeats[idx]
return torch.FloatTensor(vfeat), torch.FloatTensor(tfeat)
In [ ]:
Copied!
def predict(hyper_dict, test_loader):
print(hyper_dict)
print("using {} device.".format(device))
# 直接加载
net = torch.load(hyper_dict.model_loc)
net.eval()
all_preds = []
with torch.no_grad():
val_bar = tqdm(test_loader, file=sys.stdout)
for val_data in val_bar:
val_images, val_text = val_data
outputs = net(val_images.to(device), val_text.to(device))
preds = torch.argmax(outputs.data, 1)
all_preds.extend(preds.cpu().numpy().flatten())
return all_preds
def predict(hyper_dict, test_loader):
print(hyper_dict)
print("using {} device.".format(device))
# 直接加载
net = torch.load(hyper_dict.model_loc)
net.eval()
all_preds = []
with torch.no_grad():
val_bar = tqdm(test_loader, file=sys.stdout)
for val_data in val_bar:
val_images, val_text = val_data
outputs = net(val_images.to(device), val_text.to(device))
preds = torch.argmax(outputs.data, 1)
all_preds.extend(preds.cpu().numpy().flatten())
return all_preds
In [ ]:
Copied!
if __name__ == '__main__':
parser = argparse.ArgumentParser(description="check")
parser.add_argument('--vtype', type=str, default='clip', help='resnet or clip')
parser.add_argument('--ttype', type=str, default='clip', help='roberta or clip')
parser.add_argument('--batchsize', type=int, default=1024, help='128 512 1024')
parser.add_argument('--model_loc', type=str, default='saved/saved_models/clip.pth',help='saved models\' location')
args = parser.parse_args()
# 读取数据集与特征信息
feats_text = json.load(open('saved/%s_train.json' % args.ttype, 'r'))
feats_img = json.load(open('saved/%s_train.json' % args.vtype, 'r'))
feats_text = feats_text['txt_feats']
feats_img = feats_img['img_feats']
feats_text = np.array(feats_text)
feats_img = np.array(feats_img)
print(len(feats_text), len(feats_img))
# 构建数据集与dataloader
test_data = MyDataset3(feats_img, feats_text)
test_loader = DataLoader(dataset=test_data, batch_size=args.batchsize)
# 推理
res = predict(args, test_loader)
df = pd.read_csv("data/train.txt")
df["pred"] = res
df["pred"] = df["pred"].map(int2cat)
df["diff"] = df["tag"] != df["pred"]
df.to_csv("output/tmp_no_open_check.txt", index=False)
neg2pos = 0
pos2neg = 0
neu2pos = 0
neu2neg = 0
pos2neu = 0
neg2neu = 0
cnt = 0
for _, i in df.iterrows():
if i["pred"] == "negative" and i["tag"] == "positive":
pos2neg += 1
cnt += 1
elif i["pred"] == "positive" and i["tag"] == "negative":
neg2pos += 1
cnt += 1
elif i["pred"] == "neutral" and i["tag"] == "positive":
pos2neu += 1
cnt += 1
elif i["pred"] == "neutral" and i["tag"] == "negative":
neg2neu += 1
cnt += 1
elif i["pred"] == "positive" and i["tag"] == "neutral":
neu2pos += 1
cnt += 1
elif i["pred"] == "negative" and i["tag"] == "neutral":
neu2neg += 1
cnt += 1
print(neg2pos, pos2neg, neu2pos, neu2neg, pos2neu, neg2neu, 1- cnt / len(feats_text))
if __name__ == '__main__':
parser = argparse.ArgumentParser(description="check")
parser.add_argument('--vtype', type=str, default='clip', help='resnet or clip')
parser.add_argument('--ttype', type=str, default='clip', help='roberta or clip')
parser.add_argument('--batchsize', type=int, default=1024, help='128 512 1024')
parser.add_argument('--model_loc', type=str, default='saved/saved_models/clip.pth',help='saved models\' location')
args = parser.parse_args()
# 读取数据集与特征信息
feats_text = json.load(open('saved/%s_train.json' % args.ttype, 'r'))
feats_img = json.load(open('saved/%s_train.json' % args.vtype, 'r'))
feats_text = feats_text['txt_feats']
feats_img = feats_img['img_feats']
feats_text = np.array(feats_text)
feats_img = np.array(feats_img)
print(len(feats_text), len(feats_img))
# 构建数据集与dataloader
test_data = MyDataset3(feats_img, feats_text)
test_loader = DataLoader(dataset=test_data, batch_size=args.batchsize)
# 推理
res = predict(args, test_loader)
df = pd.read_csv("data/train.txt")
df["pred"] = res
df["pred"] = df["pred"].map(int2cat)
df["diff"] = df["tag"] != df["pred"]
df.to_csv("output/tmp_no_open_check.txt", index=False)
neg2pos = 0
pos2neg = 0
neu2pos = 0
neu2neg = 0
pos2neu = 0
neg2neu = 0
cnt = 0
for _, i in df.iterrows():
if i["pred"] == "negative" and i["tag"] == "positive":
pos2neg += 1
cnt += 1
elif i["pred"] == "positive" and i["tag"] == "negative":
neg2pos += 1
cnt += 1
elif i["pred"] == "neutral" and i["tag"] == "positive":
pos2neu += 1
cnt += 1
elif i["pred"] == "neutral" and i["tag"] == "negative":
neg2neu += 1
cnt += 1
elif i["pred"] == "positive" and i["tag"] == "neutral":
neu2pos += 1
cnt += 1
elif i["pred"] == "negative" and i["tag"] == "neutral":
neu2neg += 1
cnt += 1
print(neg2pos, pos2neg, neu2pos, neu2neg, pos2neu, neg2neu, 1- cnt / len(feats_text))