web-dev-qa-db-ja.com

ValueError:NumPy配列をTensorに変換できませんでした(サポートされていないオブジェクトタイプfloat)

バックエンド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'

2
neena

ダミー入力を作成できます

_# 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)を使用します

0
Luke