0

私はTFLearnを初めて使用しており、簡単なCNNを作成しようとしています。ここに私のコードは次のとおりです。tflearn:model.fitのValueError

import tensorflow as tf 
import tflearn 
from tflearn.layers.core import input_data, fully_connected, dropout 
from tflearn.layers.conv import conv_2d, max_pool_2d 
from tflearn.data_utils import image_dirs_to_samples, to_categorical 
from tflearn.layers.estimator import regression 


if __name__ == '__main__': 

    NUM_CATEGORIES = 5 

    X, Y = image_dirs_to_samples('./flower_photos_100') 
    Y = to_categorical(Y, NUM_CATEGORIES) 

    net = input_data(shape=[None, 299, 299, 3]) 

    net = conv_2d(net, 32, 3, activation='relu', name='conv_0') 
    net = max_pool_2d(net, 2, name='max_pool_0') 
    net = dropout(net, 0.75, name='dropout_0') 

    for i in range(4): 
     net = conv_2d(net, 64, 3, activation='relu', name='conv_{}'.format(i)) 
     net = max_pool_2d(net, 2, name='max_pool_{}'.format(i)) 
     net = dropout(net, 0.5, name='dropout_{}'.format(i)) 

    net = fully_connected(net, 512, activation='relu') 
    net = dropout(net, 0.5, name='dropout_fc') 
    softmax = fully_connected(net, NUM_CATEGORIES, activation='softmax') 

    rgrs = regression(softmax, optimizer='adam', 
          loss='categorical_crossentropy', 
          learning_rate=0.001) 

    model = tflearn.DNN(rgrs, 
         checkpoint_path='rs_ckpt', 
         max_checkpoints=3) 

    model.fit(X, Y, 
      n_epoch=10, 
      validation_set=0.1, 
      shuffle=True, 
      snapshot_step=100, 
      show_metric=True, 
      batch_size=64, 
      run_id='rs') 

私は、次のエラーを取得しています:

Traceback (most recent call last): 
    File "rs.py", line 46, in <module> 
    run_id='rs') 
    File "/usr/local/lib/python2.7/site-packages/tflearn/models/dnn.py", line 188, in fit 
    run_id=run_id) 
    File "/usr/local/lib/python2.7/site-packages/tflearn/helpers/trainer.py", line 277, in fit 
    show_metric) 
    File "/usr/local/lib/python2.7/site-packages/tflearn/helpers/trainer.py", line 684, in _train 
    feed_batch) 
    File "/usr/local/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 717, in run 
    run_metadata_ptr) 
    File "/usr/local/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 888, in _run 
    np_val = np.asarray(subfeed_val, dtype=subfeed_dtype) 
    File "/usr/local/lib/python2.7/site-packages/numpy/core/numeric.py", line 482, in asarray 
    return array(a, dtype, copy=False, order=order) 
ValueError: setting an array element with a sequence. 

私はそれがXの形状とは何かを持っていますが、私は私が修正できる方法を見つけ出すことはできません勘を持っていますそれ(また、私はimage_dirs_to_samplesがtflearnに意味をなさない何かを返すことを期待する)。

答えて

0

明らかに私の仮定は画像には当てはまりませんでした。それらは必ずしも299x299ではなく、resize=[299, 299]からimage_dirs_to_samplesに渡されました。しかし、なぜ私がValueErrorを取得したのかまだ分かりません。

0

つまり、Xを数字の小さい配列にすることはできません。 その意味は、リストXのすべての要素が同じ形であるわけではありません。 イメージをサンプルにロードする関数が実際にイメージのサイズを正規化しているかどうかを確認し、そうでなければすべてのイメージが同じサイズであることを確認してください。

+0

良い説明ですが、サンプルコードも投稿できますか? –