我正在运行多层感知器(MLP)Keras website的测试脚本,用于多类softmax分类。在jupyter笔记本中运行我得到错误“名称'keras'未定义”。这可能是一个我不喜欢的简单的python语法问题,但是这段代码直接来自keras所以我希望它应该按原样运行。我使用keras运行其他神经网络,所以我很确定我已经安装了所有东西(使用anaconda安装了keras)。有人可以帮忙吗?我在底部包含了代码和错误。谢谢!
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation
from keras.optimizers import SGD
# Generate dummy data
import numpy as np
x_train = np.random.random((1000, 20))
y_train = keras.utils.to_categorical(np.random.randint(10, size=(1000, 1)), num_classes=10)
x_test = np.random.random((100, 20))
y_test = keras.utils.to_categorical(np.random.randint(10, size=(100, 1)), num_classes=10)
model = Sequential()
# Dense(64) is a fully-connected layer with 64 hidden units.
# in the first layer, you must specify the expected input data shape:
# here, 20-dimensional vectors.
model.add(Dense(64, activation='relu', input_dim=20))
model.add(Dropout(0.5))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy',
optimizer=sgd,
metrics=['accuracy'])
model.fit(x_train, y_train,
epochs=20,
batch_size=128)
score = model.evaluate(x_test, y_test, batch_size=128)
这是错误消息:
NameError Traceback (most recent call last)
<ipython-input-1-6d8174e3cf2a> in <module>()
6 import numpy as np
7 x_train = np.random.random((1000, 20))
----> 8 y_train = keras.utils.to_categorical(np.random.randint(10, size=(1000, 1)), num_classes=10)
9 x_test = np.random.random((100, 20))
10 y_test = keras.utils.to_categorical(np.random.randint(10, size=(100, 1)), num_classes=10)
NameError: name 'keras' is not defined
答案 0 :(得分:6)
db.inventory.insert(
{
item: “ABC1”,
details: {
model: “14Q3”,
manufacturer: “XYZ Company”
},
stock: [ { size: “S”, qty: 25 }, { size: “M”, qty: 50 } ],
category: “clothing”
}
)
从上面开始,您只在from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation
from keras.optimizers import SGD
keras
keras.models
keras.layers
但这不会自动导入外部模块,如keras.optimizers
或其他子模块keras
所以,你可以做任何一个
keras.utils
但import keras
import keras.utils
from keras import utils as np_utils
是使用最广泛的。
特别是from keras import utils as np_utils
不是一个好习惯,因为导入更高模块并不一定导入其子模块(尽管它在Keras中有效)
例如,
import keras
不一定导入import urllib
因为如果有这么多大子模块,每次导入所有子模块都是低效的。
答案 1 :(得分:3)
虽然这是一个老问题,但尚未更新访问 to_categorical 函数的最新方法。
这个函数现在已经打包在 np_utils 中了。
正确的访问方式是:
from keras.utils.np_utils import to_categorical
答案 2 :(得分:2)
一般方法:
from keras.utils import to_categorical
Y_train = to_categorical(y_train, num_classes)
具体方式:
from keras.utils import to_categorical
print(to_categorical(1, 2))
print(to_categorical(0, 2))
将输出
[0. 1.]
[1. 0.]
答案 3 :(得分:1)
这对我有用:
import tensorflow as tf
from keras import utils as np_utils
y_train = tf.keras.utils.to_categorical(y_train, num_classes)
y_test = tf.keras.utils.to_categorical(y_test, num_classes)