简体   繁体   English

keras model.predict() 很慢

[英]keras model.predict() is slow

I try to create a heatmap of the perceptron's outputs by solving xor problem, but我尝试通过解决异或问题来创建感知器输出的热图,但是

model.predict (np.array ([[i / 255, i2 / 255]]))

It takes a long time to generate the map.生成 map 需要很长时间。 How can I run this faster?我怎样才能更快地运行它?

code to generate the model生成 model 的代码

from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.optimizers import SGD
import numpy as np 
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.optimizers import SGD
import numpy as np 

#X son los datos de entrada
#y son la salida correpondiente a cada entrada
X = np.array([[0,0],[0,1],[1,0],[1,1]])
y = np.array([[0],[1],[1],[0]])

model = Sequential()
model.add(Dense(8, input_dim=2))
model.add(Activation('tanh'))
model.add(Dense(1))
model.add(Activation('sigmoid'))

sgd = SGD(lr=0.1)
model.compile(loss='binary_crossentropy', optimizer=sgd)

model.fit(X, y, batch_size=1, nb_epoch=1000)

code to draw heatmap of the outputs for the problem xor为问题 xor 绘制输出热图的代码

from PIL import Image

img = Image.new('RGB', (320, 280))
pixels = img.load()
for i2 in range(255):
    for i in range(255):
       g=model.predict(np.array([[i/255,i2/255]]))
       pixels[i,i2] = (0,g*255,0)
plt.imshow(img)

The problem is that you are calling model.predict() 65536 times for a single vector.问题是您为单个向量调用model.predict() 65536 次。 This is quite inefficient.这是相当低效的。 Calculate the input vectors beforehand and run predict only once then.预先计算输入向量,然后只运行一次预测。 Takes 2 seconds on my machine.在我的机器上需要 2 秒。

x = np.linspace(0,1,256)
img = list()
for i in range(256):
    for j in range(256):
        img.append([x[j],x[i]])
pred=model.predict(np.array(img),verbose=1)
plt.imshow(pred.reshape((256,256)))
plt.colorbar()
plt.show()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM