1
基本的な数学演算を使用する単純なモデルを定義します。私は複数のアプローチを使用して実装しようとしましたが、最も明白なアプローチは失敗しました。理由を理解したいと思います。ケラスの簡単な数学演算モデルが「モデルにテンソルを出力するにはケラステンソルでなければならない」
のコードを見てみましょう:
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
の出力はほとんど同じですが、直感的なものは、何らかの理由で失敗します。