为何已定义xTrain仍报"NameError: name 'xTrain' is not defined"错误?
错误原因及解决办法
错误原因
这个NameError的本质是变量作用域不匹配:
xTrain是你在data()函数内部定义的局部变量,Python中局部变量的作用域仅限函数内部,函数外部的代码无法直接访问。- 你只完成了
data()函数的定义,但从未调用过这个函数,也没有将函数返回的训练数据赋值给全局作用域下的xTrain变量,所以当执行input_shape = xTrain.shape[1:]时,Python找不到名为xTrain的有效变量,就会抛出该错误。
解决方法
你需要先调用data()函数,把它返回的结果赋值给对应变量,之后再去使用这些变量:
# 第一步:调用data函数获取拆分好的数据集 xTrain, yTrain, xVal, yVal = data() # 第二步:再定义模型相关参数 input_shape = xTrain.shape[1:] kern_size1 = 3 kern_size2 = 2 # 后续模型构建代码保持不变 model = Sequential() model.add(Conv2D(256, kernel_size=(kern_size1,kern_size1), activation=None, input_shape=input_shape, name="Conv2D_1",padding="valid", strides=(2,2))) model.add(BatchNormalization(trainable=True)) model.add(ReLU()) # ...(剩余模型层代码)
内容的提问来源于stack exchange,提问作者user20128111
相关产品推荐
相关产品推荐

