在python中有switch-case语句,Python中case
原因:
函数里用的是局部变量,从而函数调用结束后会被销毁。如果不声明是全局变量,那么就会报错:(注意灰色字体注释的地方)
定义load_data():从keras.datasets导入mnist #全局train_image,train_lable,test_image,test_lable (train_image,train_lable),(test_image,test _ lable)=mnist。load _ data()print(训练数据个数:%d % len(train_image)) print(测试数据个数:% d % len(test_image))返回train _ image,train_lable,test_image,test _ labled ef image _ show(image):fig=PLT。GCF()fig . set _ size _ inches(2,2) plt.imshow(image,cmap= binary )PLT。show()load _ data()image _ show(train _ image[0])报错:
解决方法:
加上关键字:global
定义load_data():从keras.datasets导入手写数字识别全局train_image,train_lable,test_image,test_lable (train_image,train_lable),(test_image,test _ lable)=mnist。load _ data()print(训练数据个数:%d % len(train_image)) print(测试数据个数:% d % len(test_image))返回train _ image,train_lable,test_image,test _ labled ef image _ show(image):fig=PLT。GCF()fig . set _ size _ inches(2,2) plt.imshow(image,cmap= binary )PLT。show()load _ data()image _ show(train _ image[0])搞定:
后来又遇到了问题:
定义load_data():从keras.datasets导入手写数字识别全局train_image,train_lable,test_image,test_lable (train_image,train_lable),(test_image,test _ lable)=mnist。load _ data()print(训练数据个数:%d % len(train_image)) print(测试数据个数:%d % len(test_image))返回train_image,train_lable,test_image,test _ labled ef image _ show(image):fig=PLT。GCF()fig . set _ size _ inches(2,2) plt.imshow(image,cmap= binary )PLT。show()def data _ preprocessing():train _ image=train _ image。shape(60000,784)test _ image=test _ image。形状(10000,784) train_image=train_image报错:
我已经在def load_data()函数里声明了全局变量,为什么还有这个错误呢?
原因:
如果在函数内部设置变量的值,则大蟒会将其理解为使用该名称创建局部变量,此局部变量会掩盖全局变量。
解决:
可以通过将全局变量放入到需要用到的函数中,来明确表示它是全局变量。
修改def data_preprocessing():
def data _ preprocessing():全局train _ image,train_lable,test_image,test _ lable train _ image=train _ image。shape(60000,784)test _ image=test _ image。shape(10000,784)train _ image=train _ image。astype( float 32 )test _ image=test _ image。astype( float 32 )train _ image/=255 test _ image/=255 print(train _ image[0])搞定。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。