-2
私は10から15までエポックを増加させましたが、精度には影響しませんでした。両方とも、精度は49.3%であり、損失は1.0であった。なぜニューラルネットの精度は同じですか?
なぜこのように動作しているのでしょうか?私はTensorFlowと深く学ぶのが初めてです。
def train_neural_network(x):
prediction = neural_network_model(x)
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=prediction,labels=y))
optimizer = tf.train.AdamOptimizer(learning_rate=0.001).minimize(cost)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
try:
epoch = int(open(tf_log,'r').read().split('\n')[-2]) + 1
print('STARTING:',epoch)
except:
epoch = 1
# this will track epochs using a log file
while epoch <= n_epochs:
if epoch != 1:
saver.restore(sess,"./model.ckpt")
epoch_loss = 1
with open('lexicon-2500-2638.pickle','rb') as f:
lexicon = pickle.load(f)
print("lexicon length: ", len(lexicon))
with open('train_set_shuffled.csv', buffering=20000, encoding='latin-1') as f:
batch_x = []
batch_y = []
batches_run = 0
for line in f:
label = line.split(':::')[0]
tweet = line.split(':::')[1]
current_words = word_tokenize(tweet.lower())
current_words = [lemmatizer.lemmatize(i) for i in current_words]
features = np.zeros(len(lexicon))
for word in current_words:
if word.lower() in lexicon:
index_value = lexicon.index(word.lower())
features[index_value] += 1
line_x = list(features)
line_y = eval(label)
batch_x.append(line_x)
batch_y.append(line_y)
if len(batch_x) >= batch_size:
_, c = sess.run([optimizer, cost], feed_dict={x: np.array(batch_x),
y: np.array(batch_y)})
epoch_loss += c
batch_x = []
batch_y = []
batches_run += 1
print('Batch run:',batches_run,'/',total_batches,'| Epoch:',epoch,'| Batch Loss:',c,)
saver.save(sess, "./model.ckpt")
print('Epoch',epoch,'completed out of',n_epochs,'loss:',epoch_loss)
with open(tf_log,'a') as f:
f.write(str(epoch) + '\n')
epoch += 1
train_neural_network(x)
学習データとしてネットワークに何を渡しているのですか?入力内容とラベルの例を教えてください。また、各トレーニングバッチの内容を簡略化して表示できますか?あなたの辞書はどれくらいですか?どれだけのデータを訓練していますか? –
純粋なテンソルフローよりもテンソルフローバックエンドを持つケーラを使用する方が良い – Nickpick