筆者遇到的問題:
1.
print(len(training_data))
TypeError: object of type ‘zip’ has no len()
2.
print(training_data[0][0].shape)
TypeError: ‘zip’ object is not subscriptable
筆者各種搜尋,然後找到了:
提問者的問題:
Python 2 –> 3: object of type ‘zip’ has no len()
It’s in Python 2.7. I’m using 3.4. This is the line that troubles me:
if test_data: n_test = len(test_data)
I get: TypeError: object of type ‘zip’ has no len().
Is there a way to rewrite it so that it works in 3.4?
回答者的答案之一:
Try using list(zip(…) where you have zip(…) – Julien Jun 27 ‘16 at 4:02
這個來自連結:https://stackoverflow.com/questions/31011631/python-2-3-object-of-type-zip-has-no-len
于是筆者跑去改代碼:
把原來的:
tr_d, va_d, te_d = load_data()
training_inputs = [np.reshape(x, (, )) for x in tr_d[]]
training_results = [vectorized_result(y) for y in tr_d[]]
training_data = zip(training_inputs, training_results)
validation_inputs = [np.reshape(x, (, )) for x in va_d[]]
validation_data = zip(validation_inputs, va_d[])
test_inputs = [np.reshape(x, (, )) for x in te_d[]]
test_data = zip(test_inputs, te_d[])
return (training_data, validation_data, test_data)
改為了:
tr_d, va_d, te_d = load_data()
training_inputs = [np.reshape(x, (, )) for x in tr_d[]]
training_results = [vectorized_result(y) for y in tr_d[]]
training_data = list(zip(training_inputs, training_results))
validation_inputs = [np.reshape(x, (, )) for x in va_d[]]
validation_data = list(zip(validation_inputs, va_d[]))
test_inputs = [np.reshape(x, (, )) for x in te_d[]]
test_data = list(zip(test_inputs, te_d[]))
return (training_data, validation_data, test_data)
然後問題解決了:
不再報錯了,運作結果也出來了。
training data
<class 'list'>
(, )
(, )