content: import torch
  import torchvision
  import numpy as np
  import os
  import json
  from PIL import Image
  from resnet_utils import myResnet
  
  操作记录='../训练数据样本/未用'
  if not os.path.exists(操作记录):
     os.makedirs(操作记录)
  
  device = torch.device("cuda:0" if (torch.cuda.is_available()) else "cpu")
  resnet101=torchvision.models.resnet101(pretrained=True).eval()
  resnet101=myResnet(resnet101).cuda(device).requires_grad_(False)
  词数词典路径="./json/词_数表.json"
  
  with open(词数词典路径, encoding='utf8') as f:
      词数词典=json.load(f)
  
  for root, dirs, files in os.walk(操作记录):
      if len(dirs)>0:
          break
  for 号 in dirs:
      路径json = 操作记录+'/' + 号 + '/_操作数据.json'
      numpy数组路径= 操作记录+'/' + 号 + '/图片_操作预处理数据2.npz'
      if os.path.isfile(numpy数组路径):
          continue
  
      图片张量 = torch.Tensor(0)
  
      # print(图片张量.shape[0])
      操作张量 = torch.Tensor(0)
  
      伪词序列 = torch.from_numpy(np.ones((1, 60)).astype(np.int64)).cuda(device).unsqueeze(0)
  
      操作序列 = np.ones((1, 1))
      结束序列 = np.ones((1, 1))
      计数 = 0
      print('正在处理{}'.format(号))
      数据列=[]
      with open(路径json, encoding='ansi') as f:
          移动操作='无移动'
          while True:
              df = f.readline()
              df = df.replace('\'', '\"')
  
  
              if df == "":
                  break
              df = json.loads(df)
              数据列.append(df)
      # for i in range(len(数据列)):
      #     if i>0 and 数据列[i]['动作操作']!='无动作' and 数据列[i-1]['动作操作']=='无动作' :
      #         数据列[i-1]['动作操作']=数据列[i]['动作操作']
      #         if i>1 and  数据列[i-2]['动作操作']=='无动作' :
      #             数据列[i - 2]['动作操作'] = 数据列[i]['动作操作']
  
  
  
      with open(路径json, encoding='ansi') as f:
          移动操作='无移动'
          for i in range(len(数据列)):
              df = 数据列[i]
  
              if 图片张量.shape[0] == 0:
                  img = Image.open(操作记录+'/' + 号 + '/{}.jpg'.format(df["图片号"]))
                  img2 = np.array(img)
  
                  img2 = torch.from_numpy(img2).cuda(device).unsqueeze(0).permute(0, 3, 2, 1) / 255
                  _,out = resnet101(img2)
                  图片张量 = out.reshape(1,6*6*2048)
                  移动操作a=df["移动操作"]
                  if 移动操作a!='无移动':
                      移动操作=移动操作a
  
                  操作序列[0, 0] = 词数词典[移动操作 + "_" + df["动作操作"]]
                  结束序列[0, 0]=df["结束"]
              else:
                  img = Image.open(操作记录+'/' + 号 + '/{}.jpg'.format(df["图片号"]))
                  img2 = np.array(img)
  
                  img2 = torch.from_numpy(img2).cuda(device).unsqueeze(0).permute(0, 3, 2, 1) / 255
                  _,out= resnet101(img2)
  
                  图片张量 = torch.cat((图片张量, out.reshape(1,6*6*2048)), 0)
                  移动操作a=df["移动操作"]
                  if 移动操作a!='无移动':
                      移动操作=移动操作a
                  操作序列=np.append(操作序列, 词数词典[移动操作 + "_" + df["动作操作"]])
                  结束序列 = np.append(结束序列, df["结束"])
                  #操作序列[0, 0] = 词数词典[df["移动操作"] + "_" + df["动作操作"]]
  
          图片张量np=图片张量.cpu().numpy()
          操作序列=操作序列.astype(np.int64)
          np.savez(numpy数组路径, 图片张量np=图片张量np, 操作序列=操作序列,结束序列=结束序列)
  
  