Transfer Learning Tutorial に従っています。ノートブックはCats and Dogsデータセットを使用して正常に実行されますが、マラリアデータセットに変更するとアサーションエラーがスローされます
AssertionError: Unrecognized instruction format: NamedSplit('train')(tfds.percent[0:80])
手動で分割してみました
raw_train = tfds.load("malaria", split="train[:80%]")
raw_test = tfds.load("malaria", split="train[81%:90%]")
raw_validation = tfds.load("malaria", split="train[91%:]")
しかし、これはプロット中にエラーをスローします
image, label = raw_train.take(2)
print(b)
plt.figure()
plt.imshow(a)
TypeError: Image data of dtype object cannot be converted to float
@dulo Collinsが正解を投稿しました。これは彼の答えの小さな拡張です。
トラブルシューティング中にこの投稿を見つけましたが、その解決策を実装できませんでした。問題の原因がわからなかったのです。幸いなことに、私はそれを通り抜ける記事を見つけました。この回答は、その記事の問題と解決策の概要です。
AssertionError:認識されない命令形式:NamedSplitはTensorFlow公式チュートリアルのimdbムービー評価例で報告されます
問題:
分割データの形式が原因です。エラーは再フォーマット後に解消されました。
SPLIT_WEIGHTS = (8, 1, 1)
splits = tfds.Split.TRAIN.subsplit(weighted=SPLIT_WEIGHTS)
(raw_train, raw_validation, raw_test), metadata = tfds.load('cats_vs_dogs', split=list(splits), with_info=True, as_supervised=True)
get_label_name = metadata.features['label'].int2str
for image, label in raw_train.take(2):
plt.figure()
plt.imshow(image)
plt.title(get_label_name(label))
上のコードは スタンフォードのCS231nコース の Tensorflowに関するJupyter Notebook からのものです。
エラー:
AssertionError:認識されない命令フォーマット:NamedSplit( 'train')(tfds.percent [0:80])
ソリューション:
splits = ("train[:80]", "train[:10]", "train[:10]")
(raw_train, raw_validation, raw_test), metadata = tfds.load('cats_vs_dogs', split=splits, with_info=True, as_supervised=True)
get_label_name = metadata.features['label'].int2str
for image, label in raw_train.take(2):
plt.figure()
plt.imshow(image)
plt.title(get_label_name(label))
これを使えます。このシンプルなラインは私にとってはうまくいきます。
(cat_train, cat_valid, cat_test), info = tfds.load('cats_vs_dogs', split=['train[:80%]', 'train[80%:90%]', 'train[90%:]'], with_info=True, as_supervised=True)