У объекта 'filter' нет атрибута 'append' при оценке модели
Я пытаюсь сделать MLModel для использования его в моем приложении, и я делаю это с python, так как я хочу получить confusion_matrix с функцией evalute()
вот мой код 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) и я установил turicreate через pip.
1 ответ
Я понял, что это ошибка на turecreate 5.5 с python 3.6 ( см. Эту ссылку), но когда вы пытаетесь понизить версию turicreate до 5.4, появляется новая ошибка, которая говорит: ‘map’ object is not subscriptable
он хорошо работает в версии 5.1, поэтому, если вы получили эту ошибку, вам следует понизить версию turicreate до 5.1, и она работает (спасибо @MatthijsHollemans за помощь)
это решено на версии 5.5.1
Заметка
Группа Тури пытается решить эту проблему в следующей версии (вы можете увидеть эту карту Ошибка Image_Classifier)