2 回答

TA貢獻1862條經(jīng)驗 獲得超7個贊
我正在處理的圖像被標準化為 [0,1]。當轉換為列表時,圖像的每個像素都具有不必要的大量精度:
[[[0.4, 0.41568627450980394, 0.4117647058823529],
[0.39215686274509803, 0.403921568627451, 0.403921568627451],
[0.38823529411764707, 0.4, 0.4],
[0.3803921568627451, 0.39215686274509803, 0.3843137254901961],
[0.3803921568627451, 0.38823529411764707, 0.38823529411764707],
...
[0.11764705882352941, 0.12941176470588237, 0.12549019607843137],
[0.11764705882352941, 0.12941176470588237, 0.12549019607843137],
[0.11764705882352941, 0.12941176470588237, 0.12549019607843137]]]
一個快速而骯臟的解決方法是使用 np.around():
img_list = np.around(img_np, 4).tolist()
結果低于有效載荷大小限制。

TA貢獻1816條經(jīng)驗 獲得超4個贊
發(fā)送如此大的整數(shù)數(shù)組通常效率不高(您將花費大量時間編碼和解碼這些數(shù)組、網(wǎng)絡延遲等)。這篇文章提供了一些選項(包括tolist您嘗試過的)。
我會推薦“打包為字節(jié)字符串的張量”或“壓縮圖像數(shù)據(jù)”。
更新 10/19/2018
為了使用這些方法,您需要修改您的圖表。如果您能夠重新導出模型,那是最簡單的。代替:
images = tf.placeholder(dtype=tf.uint8, shape=[None, None, None, 3])
你會使用:
raw_byte_strings = tf.placeholder(dtype=tf.string, shape=[None])
decode = lambda raw_byte_str: tf.decode_raw(raw_byte_str, tf.uint8)
images = tf.map_fn(decode, raw_byte_strings, dtype=tf.uint8)
添加回答
舉報