javaee论坛

普通会员

225648

帖子

337

回复

351

积分

楼主
发表于 2017-07-07 01:29:17 | 查看: 2290 | 回复: 1
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

于是笔者跑去改代码:

把原来的:

< class="ttyprint"> tr_d, va_d, te_d = load_data() training_inputs = [np.reshape(x, (784, 1)) for x in tr_d[0]] training_results = [vectorized_result(y) for y in tr_d[1]] training_data = zip(training_inputs, training_results) validation_inputs = [np.reshape(x, (784, 1)) for x in va_d[0]] validation_data = zip(validation_inputs, va_d[1]) test_inputs = [np.reshape(x, (784, 1)) for x in te_d[0]] test_data = zip(test_inputs, te_d[1]) return (training_data, validation_data, test_data)

改为了:

< class="ttyprint"> tr_d, va_d, te_d = load_data() training_inputs = [np.reshape(x, (784, 1)) for x in tr_d[0]] training_results = [vectorized_result(y) for y in tr_d[1]] training_data = list(zip(training_inputs, training_results)) validation_inputs = [np.reshape(x, (784, 1)) for x in va_d[0]] validation_data = list(zip(validation_inputs, va_d[1])) test_inputs = [np.reshape(x, (784, 1)) for x in te_d[0]] test_data = list(zip(test_inputs, te_d[1])) return (training_data, validation_data, test_data)

然后问题解决了:

不再报错了,运行结果也出来了。

< class="ttyprint">training data<class 'list'>50000(784, 1)(10, 1)

普通会员

0

帖子

304

回复

316

积分
沙发
发表于 2019-11-24 19:04:50

好好好

您需要登录后才可以回帖 登录 | 立即注册

触屏版| 电脑版

技术支持 历史网 V2.0 © 2016-2017