LSTM RNNの実装では、次のコード行を使用しました。
self.batch_size = tf.shape(x)[0]
ここで、xはデータセットapiから取得したテンソルでした。 xを印刷すると、次の出力が得られました。
Tensor("IteratorGetNext:0", shape=(?, 2, 1024), dtype=float32)
私のコードの残りの部分は
targets = tf.one_hot(y,num_classes)
cell = tf.contrib.rnn.BasicLSTMCell
cells = [cell(num_units=n) for n in num_units]
stacked_rnn_cell = tf.contrib.rnn.MultiRNNCell(cells, state_is_tuple=True)
initial_state = stacked_rnn_cell.zero_state(self.batch_size, tf.float32)
...
output, state = tf.nn.dynamic_rnn(
stacked_rnn_cell, prev_output, initial_state = initial_state, dtype = tf.float32,
sequence_length = [1024]*self.batch_size)
logits = tf.contrib.layers.fully_connected(output[-1],24)
xent = tf.nn.softmax_cross_entropy_with_logits_v2(labels = targets, logits = logits)
self.loss = tf.reduce_mean(xent)
self.opt = tf.train.GradientDescentOptimizer(0.01).\
minimize(self.loss,global_step=global_step)
self.metric_loss,self.update_loss = tf.metrics.mean(self.loss)
self.summary = tf.summary.scalar('Loss',self.update_loss)
エラーが発生しました:
InvalidArgumentError (see above for traceback): ConcatOp : Dimensions of inputs should match: shape[0] = [1024,2] vs. shape[1] = [1,128]
1024はバッチサイズ、2は入力サイズ、128は状態サイズです。
最初の行を次のように変更した場合
self.batch_size = 1024
または他の定数、それは訓練します。プレースホルダーでこれを処理するのではなく、データサンプルから値を推測するだけで、一般的に使用できます。何か案は?
回答 1 件
関連記事
- 3rd(一時変数)を使用せずにスワッピングすると、このプログラムで差分が返されます。理由を教えてもらえますか?
- $HOME変数なしでbashがホームディレクトリを知る方法はありますか
- toArray()を使用せずにDexie値を取得します
- 式をjavascript変数プレースホルダーに置き換えます
- プロパティを検証せずに共用体変数のタイプをテストする
- 警告なしに構造体の変数を任意の値と等しくするにはどうすればよいですか? (C)
- KerasTensorflowと入力変数のOpenCVエラー
- コードの上位行が終了するのを待たずにカウント変数をインクリメントする
- 「使用せずに上記で定義された再宣言された変数」エラーに乗る方法
関連した質問
- tfkerasapplicationsInceptionV3の混合レイヤーとは何ですか?
- 事前トレーニングvgg19テンソルフロー、Kerasを使用してCNNオートエンコーダーでカスタム損失(知覚損失)を定義します
- Tensorflow/Keras Flattenレイヤーがアレイをフラット化しないのはなぜですか?
- tfkeraslayersConv2Dの使用法
- テンソルではなく値を印刷するにはどうすればよいですか?
- モジュール 'tensorflow_datasetscorefeatures'には属性 'text'がありません
- StackAbuseガイドに従いますが、機能していません
- Tensorflow DecodeJPEG:予期された画像(JPEG、PNG、またはGIF)、「\ 000 \ 000 \ 000 \ 000 \ 000 \ 000 \ 000 \ 00」で始まる不明な形式を取得しました
- なぜこのエラーが発生するのですか? TypeError:タイプのオブジェクトをTensorに変換できませんでした
- Keras Conv1Dレイヤーはどの軸で機能しますか?
解決策を見つけました!問題の行は
変更する場合:
期待どおりに動作するようです。