2017-10-03 13 views
-2

私はstackoverflowの以前のソリューションを参考にしました。しかし、この質問に対して適切な解決策を見つけることができませんでした。これは、ラベルを使用して顔を検出するニューラルネットワークの顔を認識するための顔のトレーニング用のコードです。しかし、私はエラーを述べる: - ValueError:シーケンスで配列要素を設定します。。私のすべての画像は190 * 190ピクセルの大きさです。解決策を提案してください。私は深い学びに新しいので、plzzは自分がDLのための訓練を受けるためのソースを示唆しています。ValueError:テンソルフローの配列を持つ配列要素を設定する

def datasets(path1, label): 
    path = path1 
    image_path = [os.path.join(path, f)for f in os.listdir(path)] 
    gajsdata = [] 

    for image in image_path: 
     read = Image.open(image) 
     read1 = np.array(read, dtype=object) 
     gajsdata.append(read1) 
     label.append(1) 
    return gajsdata, label 
label = [] 
gajsdata, label = datasets("images_path", label) 
mydata, label = datasets("images1_path", label) 

gajsdata1 = np.append(gajsdata, mydata) 
data = pd.DataFrame({'pixels': gajsdata, 'label':label}) 
label = data['label'] 
data = data.drop('label', axis=1) 

def one_hot_encoding(y): 
    encode = OneHotEncoder(sparse=False) 
    integer_encoded = y.reshape(len(y), 1) 
    one_hot_encode = encode.fit_transform(integer_encoded) 
    return one_hot_encode 
label = OneHotEncoder(label) 

n_inpus = 192 
n_classes = 2 
training_epoch = 1000 
learning_rate = 0.001 

# setting up placeholder 
x = tf.placeholder(tf.float32, [None, n_inpus]) 
y_ = tf.placeholder(tf.float32, [None, n_classes]) 

hidden_layer1 = 60 
hidden_layer2 = 60 
hidden_layer3 = 60 

# now setting up variables 
w = {'w1': tf.Variable(tf.truncated_normal([n_inpus, hidden_layer1])), 
    'w2': tf.Variable(tf.truncated_normal([hidden_layer1, hidden_layer2])), 
    'w3': tf.Variable(tf.truncated_normal([hidden_layer2, hidden_layer3])), 
    'out': tf.Variable(tf.truncated_normal([hidden_layer3, n_classes]))} 
b = {'b1': tf.Variable(tf.zeros([hidden_layer1])), 
    'b2': tf.Variable(tf.zeros([hidden_layer2])), 
    'b3': tf.Variable(tf.zeros([hidden_layer3])), 
    'out': tf.Variable(tf.zeros([n_classes]))} 

# now creating our model 

layer1 = tf.add(tf.matmul(x, w['w1']), b['b1']) 
layer1_relu = tf.nn.relu(layer1) 

# 2nd layer 
layer2 = tf.add(tf.matmul(layer1_relu, w['w2']), b['b2']) 
layer2_relu = tf.nn.relu(layer2) 

# 3rd layer 
layer3 = tf.add(tf.matmul(layer2_relu, w['w3']), b['b3']) 
layer3_relu = tf.nn.relu(layer3) 

# output layer 
output = tf.matmul(layer3_relu, w['out']) + b['out'] 

y = output 
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=y, labels=y_)) 
training_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) 

# initializing the variables 
init = tf.global_variables_initializer() 

# creating a session 
sess = tf.Session() 
sess.run(init) 



for epoch in range(training_epoch): 
    # print(np.array(Image.open(image_path[f]for f in range(10)))) 
    sess.run(training_step, {x: data, y_: label}) 
+0

plzz解決方法を教えてください。私は本当に答えを知りたいです。 – Abhishek

+0

不正なシェイプのリストから配列を作成しようとすると、numpyエラーのように見えます。すべての画像が同じ形になっていますか?また、あなたの質問にエラースタックのトレースを編集することはできますか?少なくとも、どのラインがエラーを出すのかを教えてください。 – umutto

+0

私はセッションを実行するとエラーが発生します。先生はこの問題で私を助けてください。はい、すべての画像は形190 * 190です – Abhishek

答えて

0
return label, gajsdata 
label = [] 
gajsdata, label = datasets("images_path", label) 
mydata, label = datasets("images1_path", label) 

あなたは、ラベルと紛らわしいデータではありませんか?データセット()によって返されるタプルの順序は、読んだものに関して逆になっているようです。

が、これは動作しない場合は、エラーが発生した行番号を含む完全なエラー・メッセージを、追加してください以下の2行

label, gajsdata = datasets("images_path", label) 
label, mydata = datasets("images1_path", label) 

でスクリプトを実行するようにしてください。

関連する問題