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將返回一些有意義的東西)。

回答

0

顯然我對圖像的假設不是真的:它們不一定是299x299,當我通過resize=[299, 299]image_dirs_to_samples它開始工作。但是,我仍然不明白爲什麼我會收到ValueError。

0

這意味着它不能把X變成一個numpy數組。 它的含義是,並非列表X中的所有元素都具有相同的形狀。 確保將圖像加載到樣本的功能確實能夠規範化圖像的大小,如果沒有,請確保所有圖像的大小相同。

+0

很好的解釋,但你可以發佈示例代碼? –