2
私は畳み込みニューラルネットワークを構築しようとしましたが、私は本当に奇妙な問題を偶然見つけました。ある Tensorflow:重みは変化せず、コストは1.0に設定されました
- 値:今ここに私の問題がある
import tensorflow as tf import numpy as np import matplotlib.image as mpimg import glob x = [] y = 1 for filename in glob.glob('trainig_data/*.jpg'): im = mpimg.imread(filename) x.append(im) if len(x) == 10: break epochs = 5 weights = [tf.Variable(tf.random_normal([5,5,3,32],0.1)), tf.Variable(tf.random_normal([5,5,32,64],0.1)), tf.Variable(tf.random_normal([5,5,64,128],0.1)), tf.Variable(tf.random_normal([75*75*128,1064],0.1)), tf.Variable(tf.random_normal([1064,1],0.1))] def CNN(x, weights): output = tf.nn.conv2d([x], weights[0], [1,1,1,1], 'SAME') output = tf.nn.relu(output) output = tf.nn.conv2d(output, weights[1], [1,2,2,1], 'SAME') output = tf.nn.relu(output) output = tf.nn.conv2d(output, weights[2], [1,2,2,1], 'SAME') output = tf.nn.relu(output) output = tf.reshape(output, [-1,75*75*128]) output = tf.matmul(output, weights[3]) output = tf.nn.relu(output) output = tf.matmul(output, weights[4]) output = tf.reduce_sum(output) return output sess = tf.Session() prediction = CNN(tf.cast(x[0],tf.float32), weights) cost = tf.reduce_mean(tf.square(prediction-y)) train = tf.train.GradientDescentOptimizer(0.01).minimize(cost) init = tf.global_variables_initializer() sess.run(init) for e in range(epochs): print('epoch:',e+1) for x_i in x: prediction = CNN(tf.cast(x_i,tf.float32), weights) sess.run([cost, train]) print(sess.run(cost)) print('optimization finished!') print(sess.run(prediction))
:
最初の最初は、ここに私のコードです常に1.0
- 予測は常に0を返します0
いくつかのデバッグを行った後、オプティマイザからウェイトを入れる前に、コストと予測が1.0と0でないため、問題がオプティマイザから発生していることがわかりました。
私はそれが十分な情報であり、あなたが私の問題を助けてくれることを望みます。
何も変更されていません –