Я новичок в tenorflow .. Не могли бы вы помочь мне это исправить? выборка итоговых данных: 53580 / столбцы: 22. Я пытаюсь проверить данные с 53580 данными, в то время как я получил 42864 данных для тренировочных данных. Я все еще получил ошибку [TensorFlow ValueError: Невозможно передать значение формы (42859, 7, 22) для Tensor 'Placeholder: 0', который имеет форму '(?, 7, 4)']
from sklearn.preprocessing import StandardScaler, MinMaxScaler
from sklearn.model_selection import train_test_split
x = data.drop('MPG', axis=1)
y = data['MPG']
timesteps = seq_length = 6
data_dim = 4
hidden_dim = 4
output_dim = 1
learing_rate = 0.0005
iterations = 500
dataX = []
dataY = []
for i in range(0, len(y) - seq_length):
_x = np.copy(x[i:i + seq_length + 1])
_x[timesteps-2][data_dim-1] = 0
_x[timesteps-1][data_dim-1] = 0
_x[timesteps][data_dim-1] = 0
_y = [y[i + seq_length]]
dataX.append(_x)
dataY.append(_y)
train_size = int(len(dataY) * 0.8)
test_size = len(dataY) - train_size
trainX = np.array(dataX[:train_size])
testX = np.array(dataX[train_size : ])
trainY = np.array(dataY[:train_size])
testY = np.array(dataY[train_size : ])
#LSTM
X = tf.placeholder(tf.float32, [None, seq_length+1, data_dim])
Y = tf.placeholder(tf.float32, [None, 1])
def lstm_cell():
cell = tf.nn.rnn_cell.LSTMCell(hidden_dim, state_is_tuple=True)
return cell
multi_cells = tf.nn.rnn_cell.MultiRNNCell([lstm_cell() for _ in range(5)], state_is_tuple=True)
outputs, _states = tf.nn.dynamic_rnn(multi_cells, X, dtype=tf.float32)
Y_pred = tf.contrib.layers.fully_connected(outputs[:, -1], output_dim, activation_fn=None)
loss = tf.reduce_sum(tf.square(Y_pred - Y))
train = tf.train.RMSPropOptimizer(learing_rate).minimize(loss)
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)
print(trainX.shape)
print(trainY.shape)
(42859, 7, 22) - trainX.shape / (42859, 1) - trainY.shape
for i in range(500):
_ , cost = sess.run([train ,loss], feed_dict={X: trainX, Y: trainY})
if (i+1) % (500/10) == 0:
print("[step: {}] loss: {}".format(i+1, cost))
ValueError Traceback (most recent call last)
<ipython-input-28-b70d3e1133a8> in <module>()
2 for i in range(500): #iterations
3
----> 4 _ , cost = sess.run([train ,loss], feed_dict={X: trainX, Y: trainY})
5 if (i+1) % (500/10) == 0:
6 print("[step: {}] loss: {}".format(i+1, cost))
1 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py in _run(self, handle, fetches, feed_dict, options, run_metadata)
1147 'which has shape %r' %
1148 (np_val.shape, subfeed_t.name,
-> 1149 str(subfeed_t.get_shape())))
1150 if not self.graph.is_feedable(subfeed_t):
1151 raise ValueError('Tensor %s may not be fed.' % subfeed_t)
ValueError: Cannot feed value of shape (42859, 7, 22) for Tensor 'Placeholder:0', which has shape '(?, 7, 4)'
Как я могу это исправить? ... Позвольте мне знаете пожалуйста