加载Keras模型错误:没有注册Opkernel以支持Op'分配'与这些attrs

时间:2017-12-12 13:08:44

标签: python tensorflow raspberry-pi keras

我使用Floyd hub来训练以下模型并保存它

# Create the model
model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=(3, 32, 32), activation='relu', padding='same'))
model.add(Dropout(0.2))
model.add(Conv2D(32, (3, 3), activation='relu', padding='same'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu', padding='same'))
model.add(Dropout(0.2))
model.add(Conv2D(64, (3, 3), activation='relu', padding='same'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(128, (3, 3), activation='relu', padding='same'))
model.add(Dropout(0.2))
model.add(Conv2D(128, (3, 3), activation='relu', padding='same'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dropout(0.2))
model.add(Dense(1024, activation='relu', kernel_constraint=maxnorm(3)))
model.add(Dropout(0.2))
model.add(Dense(512, activation='relu', kernel_constraint=maxnorm(3)))
model.add(Dropout(0.2))
model.add(Dense(num_classes, activation='softmax'))
# Compile model
epochs = 50
adammax = keras.optimizers.Adamax(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)

model.compile(loss='categorical_crossentropy', optimizer=adammax, metrics=['accuracy'])
print(model.summary())

当我尝试将其加载到我的电脑上时,它工作正常。但是当我将它加载到Raspberry Pi上时,我收到以下错误。我也试图只保存重量并加载它们,但它没有工作,我得到了同样的错误。我在Raspberry Pi上使用相同版本的Tensorflow作为Floyd hub。

enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

如上所述,您传递的是T = DT_INT64,而这不是此操作支持的内核之一。您可以看到int64版本是否未在.so文件中提供,自己编写op内核,或者尝试在python代码中的此操作之前转换为tf.int32。最后一个对我很有用。