我在theano后端安装了keras并尝试从中训练一些网络 https://blog.thoughtram.io/machine-learning/2016/11/02/understanding-XOR-with-keras-and-tensorlow.html 我现在正在使用CPU。
import numpy as np
from keras.models import Sequential
from keras.layers.core import Dense
import time
# the four different states of the XOR gate
training_data = np.array([[0,0],[0,1],[1,0],[1,1]], "float32") #line 1
#training_data = np.random.random((10000, 2)) #line2
# the four expected results in the same order
target_data = np.array([[0],[1],[1],[0]], "float32") #line3
#target_data = np.random.random((10000, 1)) #line4
model = Sequential()
model.add(Dense(16, input_dim=2, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='mean_squared_error',
optimizer='adam',
metrics=['binary_accuracy'])
start = time.time()
model.fit(training_data, target_data, nb_epoch=500, verbose=0)
print "time: " + str(time.time() - start)
print model.predict(training_data).round()
取消注释line1
和line3
,我得到了
time: 2.50199985504
在这个结果之后,我认为我应该使用更大的训练集,因为numpy针对大型数组进行了优化,但是
取消注释line2
和line4
后,我
time: 186.332000017
我使用theano而没有keras的结果相同。 为什么keras和theano在我的代码中这么慢或者有什么问题?