<!-- language:python-->
import tensorflow as tf
import numpy as np
from tensorflow.python.ops import rnn, rnn_cell
from tensorflow.contrib.data import Dataset, Iterator
a = [[0.0,0.0,1.0,1.0,0.0,0.0,1.0,0.0],
[0.0,1.0,0.0,1.0,0.0,0.0,0.0,1.0],
[1.0,1.0,0.0,0.0,0.0,1.0,1.0,0.0],
[1.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0]]
b = [[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],
[0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0],
[0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0],
[0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0]]
hm_epochs = 3
n_classes = 4
batch_size = 4
chunk_size = 8
n_chunks = 4
rnn_size = 128
x = tf.placeholder('float', [None, n_chunks,chunk_size])
y = tf.placeholder('float')
def next_batch(a,b,batchSize):
return [a for _ in range(batchSize)], [b for _ in range(batchSize)]
def recurrent_neural_network(x):
layer = {'weights':tf.Variable(tf.random_normal([rnn_size,n_classes])),
'biases':tf.Variable(tf.random_normal([n_classes]))}
x = tf.transpose(x)
x = tf.reshape(x, [-1, chunk_size])
x = tf.split(x, n_chunks)
lstm_cell = rnn_cell.BasicLSTMCell(rnn_size,state_is_tuple=True)
outputs, states = rnn.static_rnn(lstm_cell, x, dtype=tf.float32)
output = tf.matmul(outputs[-1],layer['weights']) + layer['biases']
return output
def train_neural_network(x):
prediction = recurrent_neural_network(x)
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits =
prediction,labels=y))
optimizer = tf.train.AdamOptimizer().minimize(cost)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for epoch in range(hm_epochs):
epoch_loss = 0.0
for _ in range((1)):
epoch_x, epoch_y=
next_batch(b,a,batch_size)
_, c = sess.run([optimizer, cost], feed_dict={x: epoch_x, y:
epoch_y})
epoch_loss += c
print('Epoch', epoch, 'completed out
of',hm_epochs,'loss:',epoch_loss)
correct = tf.equal(tf.argmax(prediction, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(correct, 'float'))
print('Accuracy:',accuracy.eval({x:val_signalGen.reshape((-1,
n_chunks, chunk_size)), y:val_states}))
train_neural_network(x)
私はテンソルフローの学習の初心者です。私はMNISTのチュートリアル(https://pythonprogramming.net/rnn-tensorflow-python-machine-learning-tutorial/)のコードを、単純な配列でMNISTデータセットを置き換えて修正しました。変更されたテンソルフローMNISTチュートリアルコード:エラー:ロットとラベルは同じサイズでなければなりません。
しかし、私が変更されたコードを実行した後、私は以下のようにエラーが発生しました:
Caused by op 'SoftmaxCrossEntropyWithLogits', defined at:
File ".\stackOverflowAsk.py", line 78, in <module>
train_neural_network(x)
File ".\stackOverflowAsk.py", line 53, in train_neural_network
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits =
prediction,labels=y))
File "C:\Users\yongx\AppData\Local\Programs\Python\Python35\lib\site-
packages\tensorflow\python\ops\nn_ops.py", line 1594, in
softmax_cross_entropy_with_logits
precise_logits, labels, name=name)
File "C:\Users\yongx\AppData\Local\Programs\Python\Python35\lib\site-
packages\tensorflow\python\ops\gen_nn_ops.py", line 2380, in _
softmax_cross_entropy_with_logits
features=features, labels=labels, name=name)
File "C:\Users\yongx\AppData\Local\Programs\Python\Python35\lib\site-
packages\tensorflow\python\framework\op_def_library.py", line 767, in
apply_op
op_def=op_def)
File "C:\Users\yongx\AppData\Local\Programs\Python\Python35\lib\site-
packages\tensorflow\python\framework\ops.py", line 2506, in create_op
original_op=self._default_original_op, op_def=op_def)
File "C:\Users\yongx\AppData\Local\Programs\Python\Python35\lib\site-
packages\tensorflow\python\framework\ops.py", line 1269, in __init__
self._traceback = _extract_stack()
InvalidArgumentError (see above for traceback): logits and labels must
be
same size: logits_size=[4,4] labels_size=[16,8]
[[Node: SoftmaxCrossEntropyWithLogits =
SoftmaxCrossEntropyWithLogits[T=DT_FLOAT,
_device="/job:localhost/replica:0/task:0/gpu:0"](Reshape_1, Reshape_2)]]
[[Node: Mean/_15 = _Recv[client_terminated=false,
recv_device="/job:localhost/replica:0/task:0/cpu:0",
send_device="/job:localhost/replica:0/task:0/gpu:0",
send_device_incarnation=1, tensor_name="edge_962_Mean",
tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/cpu:0"]()]]
私は配列由来の私の「ラベル」、「」、形状である(4×4)ことを確認していましたしかし、なぜそれが16x8であることが分かったのですか?
すべてのアドバイスをお待ちしています。ありがとう。
どのラインがクラッシュしているかを示すトレースバックの部分を含めることができますか? また、 "<! - language:python - >"を追加すると、コードの色がきれいになります。 – TheAtomicOption
@ TheAtomicOption、Noted ..トレースバックログを追加しました。私はnoobです。<! - language:python - > ...のようなコードをどのように記述するのかよくわかりません。 – John5012
"<! - language:python - >"引用符)はポストのどこにでも置くことができ、あなたのコードを着色するためにstackoverflowのCSSに信号を送ります。他の言語にも対応しています。コードブロックの外側にあるときは表示されませんが、色にはまだ影響します。 :) – TheAtomicOption