バックエンドTensorflow 2.0を使用するケラスのこのコード行で問題に直面しています:
loss_out = Lambda(function=ctc_lambda_func, name='ctc', output_shape=(1,))([y_pred, Y_train, X_train_length, label_length])
Y_train、X_train_lengthはnumpy.ndarrays
y_predおよびlabel_lengthはクラス'tensorflow.python.framework.ops.Tensor'
ダミー入力を作成できます
_# you have defined the rest of your graph somewhere here
Y_train = Input(shape=...)
X_train_length = Input(shape=...)
loss = Lambda(function=ctc_lambda_func, name='ctc', output_shape=(1,)
)([y_pred, Y_train, X_train_length, label_length])
# defining the model is slightly different with multiple inputs
training_model = Model(inputs=[image_input, Y_train, X_train_length], outputs=[loss])
_
また、モデルをトレーニングする場合は、パラメータx
を長さ3のリストとして渡します。
_x = [<images - np.ndarray shape (batch, h, w, c)>, <Y_train inputs - np.ndarray>,
<X_train_length inputs - np.ndarray>]
_
そしてもちろんy
のダミー値
_y = np.zeros((batch, 1))
_
そしてtraining_model.train_on_batch(x, y)
よりも簡単になりました
または、上記の形式でx
およびy
を生成するジェネレーターを作成し、training_model.fit_generator(data_generator)
を使用します