我正在运行来自Keras网站的多层感知器(MLP)的测试脚本,用于多类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)
Run Code Online (Sandbox Code Playgroud)
这是错误消息:
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
Run Code Online (Sandbox Code Playgroud)
Mo *_*o K 11
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation
from keras.optimizers import SGD
Run Code Online (Sandbox Code Playgroud)
从上面,您只导入了以下子模块 keras
keras.modelskeras.layerskeras.optimizers但这不会自动导入外部模块keras
或其他子模块keras.utils
所以,你可以做任何一个
import keras
import keras.utils
from keras import utils as np_utils
Run Code Online (Sandbox Code Playgroud)
但是from keras import utils as np_utils使用最广泛.
特别import keras是不是一个好习惯,因为导入更高的模块不一定导入其子模块(尽管它在Keras中有效)
例如,
import urllib
不一定导入,urllib.request因为如果有这么多大子模块,每次导入它的所有子模块效率都很低.
一般方式:
from keras.utils import to_categorical
Y_train = to_categorical(y_train, num_classes)
Run Code Online (Sandbox Code Playgroud)
具体方式:
from keras.utils import to_categorical
print(to_categorical(1, 2))
print(to_categorical(0, 2))
Run Code Online (Sandbox Code Playgroud)
会输出
[0. 1.]
[1. 0.]
Run Code Online (Sandbox Code Playgroud)
虽然这是一个老问题,但尚未更新访问 to_categorical 函数的最新方法。
这个函数现在已经打包在 np_utils 中了。
正确的访问方式是:
from keras.utils.np_utils import to_categorical
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20238 次 |
| 最近记录: |