由于错误的环境设置而无法与Keras一起预测

时间:2019-02-27 10:56:11

标签: python tensorflow keras typeerror predict

我无法让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,因为形状是错误的。 一些答案(例如here)建议使用类似的

model.predict(np.array([[0,0,0]]))

但这对我也不起作用。 谁能告诉我该怎么做?

编辑:显然,代码不是问题,请参阅下文。

3 个答案:

答案 0 :(得分:2)

事实证明代码不是问题,但是我的软件出了点问题。执行以下步骤后,上面的代码将运行而没有错误或警告:

  1. 卸载anaconda
  2. 安装anaconda
  3. 创建新环境
  4. 将所需的软件包安装到该环境中(keras,tensorflow, 间谍...)
  5. 在该环境中运行代码

答案 1 :(得分:0)

我将您的代码粘贴到https://colab.research.google.com中,但没有出现错误。 (python2)

但是我确实收到有关int到float转换的警告。

我会尝试明确地指定test_input dtype,如下所示:

test_input = np.zeros((1,inDim), dtype=float)

因为这似乎是正在输出的错误消息。

答案 2 :(得分:0)

我再次卸载并安装了Anaconda Navigator,它已修复。