質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.59%

ValueError: Cannot feed value of shape (9, 104) for Tensor u'InputData/X:0', which has shape '(?, 11

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,429

taiyo2017

score 74

TensorFlowとtflearnを使い、ネットワークを構築しています。
ValueError: Cannot feed value of shape (9, 104) for Tensor u'InputData/X:0', which has shape '(?, 11, 104)'とエラーがでました。
Tracebackには、

Training samples: 9
Validation samples: 2
Traceback (most recent call last):
  File "cnn.py", line 167, in <module>
    model.fit(trainDataSet, trainLabel, n_epoch=100, batch_size=32, validation_set=0.1, show_metric=True)
  File "/Users/xxx/anaconda/xxx/lib/python2.7/site-packages/tflearn/models/dnn.py", line 216, in fit
    callbacks=callbacks)
  File "/Users/xxx/anaconda/xxx/lib/python2.7/site-packages/tflearn/helpers/trainer.py", line 339, in fit
    show_metric)
  File "/Users/xxx/anaconda/xxx/lib/python2.7/site-packages/tflearn/helpers/trainer.py", line 818, in _train
    feed_batch)
  File "/Users/xxx/anaconda/xxx/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 929, in run
    run_metadata_ptr)
  File "/Users/xxx/anaconda/xxx/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 1128, in _run
    str(subfeed_t.get_shape())))
ValueError: Cannot feed value of shape (9, 104) for Tensor u'InputData/X:0', which has shape '(?, 11, 104)'


とでました。
コードは

# coding: utf-8
import tensorflow as tf
import tflearn

from tflearn.layers.core import input_data,dropout,fully_connected
from tflearn.layers.conv import conv_1d, max_pool_1d
from tflearn.layers.normalization import local_response_normalization
from tflearn.layers.estimator import regression

import pandas as pd
import numpy as np
from sklearn import metrics

tf.reset_default_graph()
net = input_data(shape=[11, 104])
net = conv_1d(net, 4, 16, activation='relu')
net = max_pool_1d(net, 1)
net = tflearn.activations.relu(net)
net = dropout(net, 0.5)
net = tflearn.fully_connected(net, 2, activation='softmax')
net = tflearn.regression(net, optimizer='adam', learning_rate=0.5, loss='categorical_crossentropy')

model = tflearn.DNN(net)

model.fit(trainDataSet, trainLabel, n_epoch=100, batch_size=32, validation_set=0.1, show_metric=True)


と書きました。

print(trainDataSet.shape)


とすると、(11, 104)とでて、

print(trainLabel.shape)


とすると、(11, 2)とでます。
なぜ、(9, 104)とエラー内容に表示されるのかわかりません。
どのように修正したらいいのでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

おそらく,(9, 104)は,print(trainDataSet.shape)=(11, 104)の90%を学習用,10%を検証用として分割しているため出てきた値だと思います.11*0.9≒9(9なのはint型による丸め込みだと思います).

どのようなデータセットかわかりませんが,動作させるのであれば,以下のように変更してみるのはいかがでしょうか.

# coding: utf-8
import tensorflow as tf
import tflearn

from tflearn.layers.core import input_data,dropout,fully_connected
from tflearn.layers.conv import conv_1d, max_pool_1d
from tflearn.layers.normalization import local_response_normalization
from tflearn.layers.estimator import regression

import pandas as pd
import numpy as np
from sklearn import metrics

tf.reset_default_graph()
net = input_data(shape=[None, 1, 104])
# net = input_data(shape=[11, 104])
net = conv_1d(net, 4, 16, activation='relu')
net = max_pool_1d(net, 1)
net = tflearn.activations.relu(net)
net = dropout(net, 0.5)
net = tflearn.fully_connected(net, 2, activation='softmax')
net = tflearn.regression(net, optimizer='adam', learning_rate=0.5, loss='categorical_crossentropy')

model = tflearn.DNN(net)

model.fit(trainDataSet, trainLabel, n_epoch=100, batch_size=11, validation_set=0.1, show_metric=True)

# model.fit(trainDataSet, trainLabel, n_epoch=100, batch_size=32, validation_set=0.1, show_metric=True)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/11/21 17:27

    すみません、一つ質問です。なぜ、batch_size=11なのでしょうか?

    キャンセル

  • 2018/11/21 19:58

    見直してみたら,batch_size=9とするべきでした.大体,32, 64, 128などが選ばれることが多いのですが,このケースだと,trainDataが11(学習用9,検証用2)となっているのでデータサイズを超えない範囲で選ぶべきだと考えたためです.

    キャンセル

  • 2018/11/21 23:04

    なるほど、ありがとうございます。
    https://teratail.com/questions/159126 に質問させてもらったのですが、バッチが原因でエラーが出ているようでした。もしご存知だったら、こちらの質問に回答をお願いします。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.59%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る