

ValueError: setting an array element with a sequence.を解決したいです．  
下記にコードを記載させていただきました．

調べてみたところ配列の次元数が違うと出ます．その意味は分かるのですが，なぜそのエラーが出ているのかわかりません．

このエラーを解決するためにはどの部分を修正したらいいのでしょうか．  
ご教授いただけますと幸いです．

[code]

    from facenet_pytorch import MTCNN, InceptionResnetV1
    from PIL import Image
    import numpy as np
    
    data_path = "/content/drive/MyDrive/研究/試作/data/"
    
    img_num = 44
    
    mtcnn = MTCNN(image_size=160, margin=10)
     
    
    resnet = InceptionResnetV1(pretrained='vggface2').eval()
    
    img_da = np.zeros((img_num, 512))
    
    for num in range(img_num):
        
        img = Image.open(data_path+'criterion/images'+str(num)+'.jpg')  
        
        img_cropped = mtcnn(img)
        
        img_cropped = mtcnn(img, save_path=data_path+'cropped/pcropped_img'+str(num)+'.jpg')
    
        
        img_embedding = resnet(img_cropped.unsqueeze(0))
     
        img_da[num] = img_embedding.squeeze().to('cpu').detach().numpy().copy()
    
    np.savetxt(data_path+'data.txt', img_da)
    
    criterion_data = np.loadtxt(data_path+'data.txt')
    # print(criterion_data)
    
    
    def cos_similarity(p1, p2): 
        return np.dot(p1, p2) / (np.linalg.norm(p1) * np.linalg.norm(p2))
    
    
    visi_a = np.zeros((img_num, criterion_data.shape[0]))
    # visi_a
    # array_info(visi_a)
    for num in range(img_num):
    
        img = Image.open(data_path+'visitor/images'+str(num)+'.jpg')  
    
        #img_cropped = mtcnn(img)
    
        img_cropped = mtcnn(img, save_path=data_path+"cropped/cropped_img"+str(num)+".jpg")
    
    
        img_embedding = resnet(img_cropped.unsqueeze(0))
    
        img_a = img_embedding.squeeze().to('cpu').detach().numpy().copy()
    
        for numd in range(criterion_data.shape[0]):
            visi_a[num][numd] = cos_similarity(img_a, criterion_data[numd])
        #print(visi_a[num])
    
    np.savetxt(data_path+'visitor_data.txt', visi_a)
    
    
[/code]

コメントありがとうございます．  
下記にエラー内容を追記させていただきます．

モジュールはGoogle colaboを使用しました．  
画像等はインターネットからランダムな人の画像を取得し，使用しました．

[code]

    100%
    107M/107M [00:28<00:00, 9.13MB/s]
    /usr/local/lib/python3.7/dist-packages/torch/nn/functional.py:780: UserWarning: Note that order of the arguments: ceil_mode and return_indices will changeto match the args list in nn.MaxPool2d in a future release.
      warnings.warn("Note that order of the arguments: ceil_mode and return_indices will change"
    ---------------------------------------------------------------------------
    TypeError                                 Traceback (most recent call last)
    TypeError: only size-1 arrays can be converted to Python scalars
    
    The above exception was the direct cause of the following exception:
    
    ValueError                                Traceback (most recent call last)
    <ipython-input-2-257eaee68c36> in <module>()
         59     # 新しい訪問者が来たときには，このデータと比較して類似している人であるという判定をする
         60     for numd in range(criterion_data.shape[0]):
    ---> 61         visi_a[num][numd] = cos_similarity(img_a, criterion_data[numd])
         62     #print(visi_a[num])
         63 
    
    ValueError: setting an array element with a sequence.
    
    
[/code]


CC BY-SA 4.0
2022-07-07T03:59:29.833
89799
2022-07-08T03:32:30.767
2022-07-08T03:32:30.767
53412
53412
question
python
ValueError: setting an array element with a sequence.を解決したいです