'filter' 对象在评估模型时没有属性 'append'
'filter' object has no attribute 'append' on evaluate a model
我正在尝试制作一个 MLModel 以便在我的应用程序上使用它,我使用 python 来完成它,因为我想通过 evalute() func
获得 confusion_matrix
这是我的 python 代码:
import turicreate as tc
import matplotlib.pyplot as plt
import os
train_data = tc.image_analysis.load_images("snacks/train", with_path=True)
test_data = tc.image_analysis.load_images("snacks/test", with_path=True)
model = tc.image_classifier.create(train_data, target="label",
model="squeezenet_v1.1",
verbose=True, max_iterations=100)
metrics = model.evaluate(test_data) #Here is my Error
我之前测试了所有这些并且它们运行良好,就在我 运行 model.evaluate(test_data)
我得到错误
我的错误是:
AttributeError Traceback (most recent call last)
<ipython-input-48-56e8ce3f107f> in <module>
----> 1 model.evaluate(test_data)
~/anaconda3/envs/turienv/lib/python3.6/site-packages/turicreate/toolkits/image_classifier/image_classifier.py in evaluate(self, dataset, metric, verbose, batch_size)
798 vectors = map(lambda l: {'name': l, 'pos':list(sf_conf_mat[sf_conf_mat['target_label']==l].sort('predicted_label')['norm_prob'])},
799 labels)
--> 800 evaluation_result['sorted_labels'] = hclusterSort(vectors, l2Dist)[0]['name'].split("|")
801
802 # Get recall and precision per label
~/anaconda3/envs/turienv/lib/python3.6/site-packages/turicreate/toolkits/image_classifier/image_classifier.py in hclusterSort(vectors, dist_fn)
750 for vj in new_vec['members']:
751 total += dist_fn(vi, vj)
--> 752 distances.append({'from': v, 'to': new_vec, 'dist': total/len(v.get('members', [v]))/len(new_vec['members'])})
753
754 vecs.append(new_vec)
AttributeError: 'filter' object has no attribute 'append'
我 运行 它在 macosx highSierra (10.13.6) 上(因为我的 macbook 是 2011,我无法将它更新到 10.14),python 3.6(带 conda),我安装了通过 pip 创建 turicreate。
我意识到这是 turecreate 5.5 和 python 3.6 (see this link) 上的一个错误,但是当您尝试将 turicreate 版本降级到 5.4 时,出现了一个新错误:‘map’ object is not subscriptable
它在 5.1 版本上运行良好,所以如果你遇到这个错误,你应该将 turicreate 版本降级到 5.1 并且它可以运行
(感谢@MatthijsHollemans 帮助我)
5.5.1版本解决
备注
Turi组下个版本尝试解决(可以看到这张卡Error Image_Classifier)
我正在尝试制作一个 MLModel 以便在我的应用程序上使用它,我使用 python 来完成它,因为我想通过 evalute() func
获得 confusion_matrix这是我的 python 代码:
import turicreate as tc
import matplotlib.pyplot as plt
import os
train_data = tc.image_analysis.load_images("snacks/train", with_path=True)
test_data = tc.image_analysis.load_images("snacks/test", with_path=True)
model = tc.image_classifier.create(train_data, target="label",
model="squeezenet_v1.1",
verbose=True, max_iterations=100)
metrics = model.evaluate(test_data) #Here is my Error
我之前测试了所有这些并且它们运行良好,就在我 运行 model.evaluate(test_data)
我得到错误
我的错误是:
AttributeError Traceback (most recent call last)
<ipython-input-48-56e8ce3f107f> in <module>
----> 1 model.evaluate(test_data)
~/anaconda3/envs/turienv/lib/python3.6/site-packages/turicreate/toolkits/image_classifier/image_classifier.py in evaluate(self, dataset, metric, verbose, batch_size)
798 vectors = map(lambda l: {'name': l, 'pos':list(sf_conf_mat[sf_conf_mat['target_label']==l].sort('predicted_label')['norm_prob'])},
799 labels)
--> 800 evaluation_result['sorted_labels'] = hclusterSort(vectors, l2Dist)[0]['name'].split("|")
801
802 # Get recall and precision per label
~/anaconda3/envs/turienv/lib/python3.6/site-packages/turicreate/toolkits/image_classifier/image_classifier.py in hclusterSort(vectors, dist_fn)
750 for vj in new_vec['members']:
751 total += dist_fn(vi, vj)
--> 752 distances.append({'from': v, 'to': new_vec, 'dist': total/len(v.get('members', [v]))/len(new_vec['members'])})
753
754 vecs.append(new_vec)
AttributeError: 'filter' object has no attribute 'append'
我 运行 它在 macosx highSierra (10.13.6) 上(因为我的 macbook 是 2011,我无法将它更新到 10.14),python 3.6(带 conda),我安装了通过 pip 创建 turicreate。
我意识到这是 turecreate 5.5 和 python 3.6 (see this link) 上的一个错误,但是当您尝试将 turicreate 版本降级到 5.4 时,出现了一个新错误:‘map’ object is not subscriptable
它在 5.1 版本上运行良好,所以如果你遇到这个错误,你应该将 turicreate 版本降级到 5.1 并且它可以运行 (感谢@MatthijsHollemans 帮助我)
5.5.1版本解决
备注
Turi组下个版本尝试解决(可以看到这张卡Error Image_Classifier)