【问题标题】:NameError: name 'X_train' is not defined. this error comes in the remaaining code also. please do rectify thisNameError:名称“X_train”未定义。这个错误也出现在剩余的代码中。请纠正这个
【发布时间】:2020-01-28 22:25:38
【问题描述】:
from sklearn.model_selection import train_test_split  

data,Label = shuffle(M, label, random_state = 2)
labelled_data = [data, Label]
X,Y = [labelled_data[0],labelled_data[1]]

X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.4, random_state=4)
x_test, x_validation, y_test, y_validation=train_test_split(X_test, Y_test, test_size=0.5,
random_state=4)

X_train = X_train.reshape((X_train.shape[0],256,256,3))
x_validation = x_validation.reshape((x_validation.shape[0],256,256,3))

x_test =x_test.reshape((x_test.shape[0],256,256,3))
X_train = X_train.astype('float32')

x_validation = x_validation.astype('float32')
x_test = x_test.astype('float32')

X_train = X_train/255
x_validation = x_validation/255
x_test =x_test/255

from keras.utils import np_utils

Y_validation = np_utils.to_categorical(Y_train,8)
y_validation =np_utils.to_categorical(y_validation,8)
y_test =np_utils.to_categorical(y_test,8)

from keras.models import Sequential
from keras.layers import Activation, Dense

model = Sequential()
model.add(Dense(units=256,input_shape=(1000,),activation='relu'))
model.add(Dense(units=64,activation='tanh'))
model.add(Dense(units=8,activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='sgd', 
metrics=['categorical_accuracy']) 
model.fit(X_train,Y_train,epochs=5,batch_size=32)
model.predict(x_test,batch_size=32)
return model


from keras.layers.convolutional import Convolution2D
model = Sequential()
model.add(convolution2D(filters=(6,3,3),input_shape=(256,256,1),activation='relu'))

from keras.layers.convolutional import MaxPooling2D
model = Sequential()
model.add(MaxPooling2D(pool_size=(2,2),strides=2))

from keras.layers import Dropout
model = Sequential()
model.add(Convolution2D(filters=6, nb_row=3, nb_col=3,subsample=(2,2),
    input_shape=(256, 256, 1,), activation='relu', border_mode='same'))
model.add(Dropout(0.1))
model.add(Flatten())
model.add(Dense(8, activation='softmax'))


model= fish_model()
print(model.summary())
history = model.fit(X_train,Y_train,validation_data=(x_validation, y_validation),epochs=5,batch_size=32)

Model: "sequential_42"

图层(类型)输出形状参数#

 dense_67 (Dense)             (None, 256)               256256    

 dense_68 (Dense)             (None, 64)                16448     

dense_69(密集)(无,8)520

 Total params: 273,224
 Trainable params: 273,224
  Non-trainable params: 0

NameError                                 Traceback (most recent call last)
 <ipython-input-131-ab439073340b> in <module>
       1 model= fish_model()
       2 print(model.summary())
 ----> 3 history = model.fit(X_train,Y_train,validation_data=(x_validation, y_validation),epochs=5,batch_size=32)

 NameError: name 'X_train' is not defined

我已经定义了 X_train,但是它显示了一个错误,比如 ir is not defined。 当我尝试测试准确性时,我也得到了相同的错误,例如未定义 x_test。

【问题讨论】:

  • 看起来X_train 是在不同的会话中定义的?所有行都在一个会话中运行吗?
  • 如果您在 Jupyter 笔记本中运行它并且您已重新启动内核,请确保您首先运行了之前的单元。另外,为什么在你的第一个 model.predict 之后是 return model

标签: python machine-learning keras


【解决方案1】:

错误中显示的行号


'3'


与您发布的代码中的行号不匹配。


开始分块运行代码以获取错误的“真实”行号。例如,运行前 10 行代码,然后运行接下来的 10 行代码,或者运行第一个模块然后运行第二个模块。当您通过分块遇到错误时,行号应该是正确的,否则您可能会在运行块时发现错误,然后再到达代码末尾。

【讨论】:

  • 当我拆分它并运行时,我在开始时遇到错误。即 data,Label = shuffle(M, label, random_state = 2) labelled_data = [data, Label] X,Y = [labelled_data[0],labelled_data[1]] 我觉得 X 没有定义
  • 我在 python 的内置函数中没有看到“shuffle”,也没有在函数中看到您对“shuffle”的定义。确保您的脚本(包括 'shuffle' def)位于 python.exe 目录中的 python._pth 文件中列出的目录中,以便正确导入并在导入中使用变量。
猜你喜欢
  • 2017-06-09
  • 1970-01-01
  • 1970-01-01
  • 2020-07-21
  • 2020-05-17
  • 2010-10-18
  • 2012-03-16
  • 1970-01-01
  • 2023-02-10
相关资源
最近更新 更多