TFRecordで多次元配列を扱う
TFRecordでたくさんの浮動小数点数を扱う
numpyで値の型を指定したつもりが
↑このあたりに関連したデータの整形のお話。
TensorFlowで多次元の配列でデータを受け取りたいとする。
まずは保存。上記リンクにあるようにnumpyを使う。3次元の場合はこんな感じでやってみた。値は32bitのfloatで。
# [ 4. 5. 6. 7.]
# [ 8. 9. 10. 11.]]
#
# [[ 12. 13. 14. 15.]
# [ 16. 17. 18. 19.]
# [ 20. 21. 22. 23.]]]
↑結果。意図通り2x3x4の3次元配列になってる。append時のキャストが必要なのはリンクの通り。
これをTFRecordに書き込んだとする。
次に、このデータを使う時に読み込む場合。
TensorFlowのテンソルとして値を表示させてみると、、、
_arr1=[[[[ 0. 1. 2. 3.]
[ 4. 5. 6. 7.]
[ 8. 9. 10. 11.]]
[[ 12. 13. 14. 15.]
[ 16. 17. 18. 19.]
[ 20. 21. 22. 23.]]]]
ふんふん、それらしくなってるな。とまあここまでしか確認はできていなくて、これからこれらを使って実際に学習が進むかってのをやっていくわけだけど。
numpyで値の型を指定したつもりが
↑このあたりに関連したデータの整形のお話。
TensorFlowで多次元の配列でデータを受け取りたいとする。
まずは保存。上記リンクにあるようにnumpyを使う。3次元の場合はこんな感じでやってみた。値は32bitのfloatで。
{ CH = 4 W = 3 H = 2 ite = 0 arr_h = np.zeros([0,W,CH] , dtype=np.float32) for h in range(H) : arr_w = np.zeros([0,CH] , dtype=np.float32) for w in range(W) : arr_ch = np.zeros([0] , dtype=np.float32) for ch in range(CH) : arr_ch = np.append(arr_ch , np.float32(ite)) ite += 1 arr_w = np.append(arr_w , [arr_ch] , axis=0) arr_h = np.append(arr_h , [arr_w] , axis=0) print(arr_h) }#[[[ 0. 1. 2. 3.]
# [ 4. 5. 6. 7.]
# [ 8. 9. 10. 11.]]
#
# [[ 12. 13. 14. 15.]
# [ 16. 17. 18. 19.]
# [ 20. 21. 22. 23.]]]
↑結果。意図通り2x3x4の3次元配列になってる。append時のキャストが必要なのはリンクの通り。
これをTFRecordに書き込んだとする。
次に、このデータを使う時に読み込む場合。
{ features = tf.parse_single_example( serialized_example, features={ 'arr_h': tf.FixedLenFeature([], tf.string), }) arr = tf.decode_raw(features['arr_h'], tf.float32) arr = tf.reshape(arr, tf.stack([2,3,4])) }reshapeが必要。画像サイズがまちまちだと画像ごとにW,H,CHの値を持たせてる場合もあったと思う(確かcifar10とか?)が定数なら持たせなくてもいいか。
TensorFlowのテンソルとして値を表示させてみると、、、
_arr1=[[[[ 0. 1. 2. 3.]
[ 4. 5. 6. 7.]
[ 8. 9. 10. 11.]]
[[ 12. 13. 14. 15.]
[ 16. 17. 18. 19.]
[ 20. 21. 22. 23.]]]]
ふんふん、それらしくなってるな。とまあここまでしか確認はできていなくて、これからこれらを使って実際に学習が進むかってのをやっていくわけだけど。
スポンサーサイト
<< SCNNodeオブジェクトをコピーしたい TopPage numpyで値の型を指定したつもりが >>
トラックバック
トラックバックURL
https://ringsbell.blog.fc2.com/tb.php/1109-a712f136
https://ringsbell.blog.fc2.com/tb.php/1109-a712f136