2017-07-12 24 views
-2

私自身のデータセットを使用してCNNを構築しようとしています。ValueError:文字列を特定のファイル名で浮動小数点に変換できませんでした

データ前処理段階では、後でnumpy配列に格納するすべてのイメージを格納するリストimg_data_listを作成しました。

img_data = np.array(img_data_list) 
img_data = img_data.astype('float32') 

しかし、私は今、次のエラーを取得しています:

ValueError: could not convert string to float: s3_10-s416_10.jpg

私は後の段階で検証目的のために画像の名前(s3_10-s416_10.jpgなど)のこれらの種類を使用しています。

このエラーを取り除くにはどうすればよいですか?

+3

、どのように実数に文字列 's3_10-s416_10.jpg'を変換するのですか? – Gribouillis

+0

なぜ名前を浮動小数点に変更しようとしていますか?私はあなたがそれと何をしたいのですか?多分私たちはあなたに良いアイデアを見つけることができます –

答えて

1

エラーは、文字列"s3_10-s416_10.jpg"を浮動小数点数に変換しようとしていることを意味します。あなたはおそらく何をしたいのか

ValueError: could not convert string to float: s3_10-s416_10.jpg 

は、ファイル内の画像データを読み込み、浮動小数点数(float32)に変換することです。 img_data_listにはファイル名が含まれていて、それらのファイルの内容は含まれていないようです。

1

img_data_listは単にファイル名のリスト、つまり文字列です。それを浮動小数点に変換することはできません。したがって、エラーです。

代わりに、あなたはnp.fromfile()を使用して行うことができ、これらのファイルの内容を読み取る必要があります。

import np 

img_filenames = ['s3_10-s416_10.jpg', 's4_10-s416_10.jpg']  # for example 
images = [np.fromfile(f, dtype=np.float32) for f in img_filenames] 

これはあなたにfloat32として、ファイルから読み込んだ画像データのリストが表示されます。

そこからあなたがしていることは明確ではありません。なぜfloat32に変換する必要があるのか​​も明らかではありません。おそらく解釈する必要があるヘッダーデータがあります。おそらくそれはscipyを使用する方が良いでしょう:pythonのを忘れ

from scipy import ndimage 

images = [ndimage.imread(f) for f in img_filenames] 

>>> type(images[0]) 
<type 'numpy.ndarray'> 
>>> images[0].dtype 
dtype('uint8') 
>>> images[0].astype(np.float32).dtype # convert to 32 bit float if you must 
dtype('float32') 
関連する問題