2017-04-21 146 views
1

我想定義一個使用基本數學運算的簡單模型。我試圖用多種方法來實現它,但最明顯的失敗了,我想明白爲什麼。Keras簡單的數學運算模型失敗,「輸出張量到模型必須是Keras張量」

讓我們看一下代碼:

import keras.backend as K 
from keras.layers import Input, Lambda 
from keras.models import Model 
import numpy as np 

x = Input(shape=(3,)) 
y = Lambda(lambda x: x ** 2)(x) 
print y 
# Tensor("lambda_1/pow:0", shape=(?, 3), dtype=float32) 
model = Model(inputs=x, outputs=y) 
# Works! 

y = x ** 2 
print y 
# Tensor("pow:0", shape=(?, 3), dtype=float32) 
model = Model(inputs=x, outputs=y) 
# Fails: TypeError: Output tensors to a Model must be Keras tensors. 

y = K.pow(x, 2) 
print y 
# Tensor("Pow:0", shape=(?, 3), dtype=float32) 
model = Model(inputs=x, outputs=y) 
# Fails: TypeError: Output tensors to a Model must be Keras tensors. 

正如你所看到的,y所有型號的輸出幾乎是相同的,但直觀的那些失敗的某些原因。

回答