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') 

나는 다음과 같은 오류가 점점 오전 : 여기 내 코드입니다 나는 그것이 X의 형태로 함께 할 수있는 뭔가가 직감이

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. 

을,하지만 난 어떻게 해결할 수 알아낼 수 없습니다 그것 (또한, 나는 image_dirs_to_samples가 tflearn에 의미가있는 것을 돌려 줄 것이라고 기대할 것입니다).

답변

0

분명히 내 가정은 사실이 아니 었습니다 : 그들은 반드시 299x299가 아니며, resize=[299, 299]image_dirs_to_samples으로 전달했을 때 작동하기 시작했습니다. 그러나 여전히 ValueError를 얻는 이유를 이해하지 못합니다.

0

이는 X를 숫자가없는 배열로 바꿀 수 없다는 것을 의미합니다. 그 의미는 목록 X의 모든 요소가 같은 모양을 가진 것은 아닙니다. 이미지를 샘플에로드하는 기능이 이미지의 크기를 실제로 표준화하는지 확인하고 그렇지 않은 경우 모든 이미지의 크기가 동일한 지 확인하십시오.

+0

좋은 설명이지만 샘플 코드도 게시 할 수 있습니까? –