Tensorflowを使用してLSTM RNNを使用して、既知の入力時系列が与えられた場合、対象シリーズの時系列値を予測する簡単な例を作成しようとしました。テンソルフローのLSTMセルから出力サイズを制御する方法
私は本質的には
what I try to accomplish formally
にしようとしている私は、セルAの出力と、以下の行列MULTはとして機能すべきだと思う:
X = np.zeros([40,2,1])
A = np.zeros([40,1,2])
b = np.arange(0,2)
X = tf.convert_to_tensor(X)
A = tf.convert_to_tensor(A)
b = tf.convert_to_tensor(b)
Y = tf.matmul(X,A)+b
tensorflow tf.graph/session:
0123の機能ではなく、出力サイズを表示するようにコードが設定されていますimport numpy as np
import tkinter
import matplotlib.pyplot as plt
import tensorflow as tf
n=40
x = np.linspace(0,10,n)
y1 = np.sin(x)
y2 = np.cos(x)
x1=np.random.normal(0,y1**2,n)
x2=np.random.normal(0,y2**2,n)
y1=(y1**2>0.4)*1
y2=(y2**2>0.4)*1
ys = np.vstack((y1,y2))
xs = np.vstack((x1,x2))
def plot_results_multiple(xs, ys):
fig = plt.figure(facecolor='white')
ax = fig.add_subplot(111)
for i, data in enumerate(xs):
plt.plot(data, label='x'+str(i))
plt.legend()
for i, data in enumerate(ys):
plt.plot(data, label='y'+str(i))
plt.legend()
plt.show()
plot_results_multiple(xs,ys)
xs = xs.T
ys = ys.T
print("Shape of arrays " +str(xs.shape) + " " +str(ys.shape))
batch_size = 1
lstm_size = 1
nseries = 2
time_steps = 40
nclasses = 2
lstm = tf.contrib.rnn.BasicLSTMCell(lstm_size,state_is_tuple=True)
stacked_lstm = tf.contrib.rnn.MultiRNNCell([lstm] * 2, state_is_tuple=True)
state = lstm.zero_state(batch_size, tf.float32)
inputs = tf.unstack(xs, num=40, axis=0)
outputs = []
with tf.variable_scope("RNN"):
for timestep in range(time_steps):
if timestep > 0: tf.get_variable_scope().reuse_variables()
output, state = lstm(tf.cast(tf.reshape(inputs[timestep],[1,nseries]),tf.float32), state)
print(tf.convert_to_tensor(output).get_shape())
outputs.append(output)
print(tf.convert_to_tensor(outputs).get_shape())
output = tf.reshape(tf.concat(outputs, 1), [-1, lstm_size])
softmax_w = tf.get_variable(
"softmax_w", [time_steps, 1,nclasses],tf.float32)# dtype=
print(softmax_w.get_shape())
softmax_b = tf.get_variable("softmax_b", [nseries], dtype=tf.float32)
print(softmax_b.get_shape())
logits = tf.matmul(output, softmax_w) + softmax_b
print(logits.get_shape())
私は私がいる問題は、それが現在、私は2x1のアウトプットを期待してい2x1の入力から、1x1のテンソルを出力しているとして、RNN LSTMセルを変更する方法を考え出すされていることと思います。どんな助力も非常に感謝しています。
tf.contrib.rnn.BasicLSTMCell(lstm_size、state_is_tuple = True)の最初のパラメータである隠れたニューロン番号によって制御されているように見えます。 – derek