TensorFlow ValueError: Невозможно передать значение формы (42859, 7, 22) для тензора 'Placeholder: 0', который имеет форму '(?, 7, 4)' - PullRequest
0 голосов
/ 03 апреля 2020

Я новичок в 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)'

Как я могу это исправить? ... Позвольте мне знаете пожалуйста

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...