由于错误的环境设置,使用 Keras 进行预测失败
predict with Keras fails due to faulty environment setup
我无法让 Keras 预测任何事情。甚至在这个极简模型中也不行:
from keras.models import Sequential
from keras.layers import Dense
import numpy as np
inDim = 3
outDim = 1
model = Sequential()
model.add(Dense(5, input_dim=inDim, activation='relu'))
model.add(Dense(outDim, activation='sigmoid'))
model.compile(loss='mse', optimizer='adam', metrics=['accuracy'])
test_input = np.zeros((1,inDim))
test_output = np.zeros((1,outDim))
model.fit(test_input, test_output)
prediction = model.predict(test_input)
一切都按预期进行,直到最后一行:
Epoch 1/1
1/1 [==============================] - 0s 448ms/step - loss: 0.2500 - acc: 1.0000
Traceback (most recent call last):
File "<ipython-input-24-ee244a6c7287>", line 16, in <module>
prediction = model.predict(test_input)
File "E:\Programme\Anaconda3\lib\site-packages\keras\engine\training.py", line 1172, in predict
steps=steps)
File "E:\Programme\Anaconda3\lib\site-packages\keras\engine\training_arrays.py", line 304, in predict_loop
outs.append(np.zeros(shape, dtype=batch_out.dtype))
TypeError: data type not understood
我用数组和列表的不同组合一遍又一遍地尝试,但要么是 TypeError 要么是 ValueError,因为形状是错误的。
几个答案(如 )建议使用类似
的东西
model.predict(np.array([[0,0,0]]))
但这对我也不起作用。
谁能告诉我如何正确执行此操作?
编辑:显然,代码不是问题,见下文。
我将您的代码粘贴到 https://colab.research.google.com 中,但没有出现错误。 (python2)
但是我确实收到了关于 int 到 float 转换的警告。
我会尝试明确指定 test_input dtype,如:
test_input = np.zeros((1,inDim), dtype=float)
因为这似乎是正在输出的错误消息。
原来代码不是问题,而是我的软件有问题。经过以下步骤,上述代码运行s没有错误或警告:
- 卸载 anaconda
- 安装 anaconda
- 创建新环境
- 将所需的软件包安装到该环境中(keras、tensorflow、
间谍...)
- 运行 该环境中的代码
我卸载并重新安装了 Anaconda Navigator,它已修复。
我无法让 Keras 预测任何事情。甚至在这个极简模型中也不行:
from keras.models import Sequential
from keras.layers import Dense
import numpy as np
inDim = 3
outDim = 1
model = Sequential()
model.add(Dense(5, input_dim=inDim, activation='relu'))
model.add(Dense(outDim, activation='sigmoid'))
model.compile(loss='mse', optimizer='adam', metrics=['accuracy'])
test_input = np.zeros((1,inDim))
test_output = np.zeros((1,outDim))
model.fit(test_input, test_output)
prediction = model.predict(test_input)
一切都按预期进行,直到最后一行:
Epoch 1/1
1/1 [==============================] - 0s 448ms/step - loss: 0.2500 - acc: 1.0000
Traceback (most recent call last):
File "<ipython-input-24-ee244a6c7287>", line 16, in <module>
prediction = model.predict(test_input)
File "E:\Programme\Anaconda3\lib\site-packages\keras\engine\training.py", line 1172, in predict
steps=steps)
File "E:\Programme\Anaconda3\lib\site-packages\keras\engine\training_arrays.py", line 304, in predict_loop
outs.append(np.zeros(shape, dtype=batch_out.dtype))
TypeError: data type not understood
我用数组和列表的不同组合一遍又一遍地尝试,但要么是 TypeError 要么是 ValueError,因为形状是错误的。
几个答案(如
model.predict(np.array([[0,0,0]]))
但这对我也不起作用。 谁能告诉我如何正确执行此操作?
编辑:显然,代码不是问题,见下文。
我将您的代码粘贴到 https://colab.research.google.com 中,但没有出现错误。 (python2)
但是我确实收到了关于 int 到 float 转换的警告。
我会尝试明确指定 test_input dtype,如:
test_input = np.zeros((1,inDim), dtype=float)
因为这似乎是正在输出的错误消息。
原来代码不是问题,而是我的软件有问题。经过以下步骤,上述代码运行s没有错误或警告:
- 卸载 anaconda
- 安装 anaconda
- 创建新环境
- 将所需的软件包安装到该环境中(keras、tensorflow、 间谍...)
- 运行 该环境中的代码
我卸载并重新安装了 Anaconda Navigator,它已修复。