關閉。這個問題需要
uj5u.com熱心網友回復:
您的訓練資料和測驗資料都必須具有相同的形狀。試試這個例子來了解你需要什么:
import tensorflow as tf
def define_model():
model = tf.keras.Sequential()
model.add(tf.keras.layers.LSTM(55, input_shape=(25,1)))
model.add(tf.keras.layers.Dense(1))
model.compile(optimizer='adam', loss='mean_squared_error')
return model
model = define_model()
samples = 50
x = tf.random.normal((samples, 25, 1))
y = tf.random.normal((samples, 1))
model.fit(x, y, batch_size=8, epochs=3)
test_x = tf.random.normal((50, 25, 1))
results = model.predict(test_x)
print(results.shape)
Epoch 1/3
7/7 [==============================] - 1s 4ms/step - loss: 1.0785
Epoch 2/3
7/7 [==============================] - 0s 4ms/step - loss: 1.0460
Epoch 3/3
7/7 [==============================] - 0s 4ms/step - loss: 1.0152
(50, 1)
關于您發布的螢屏截圖,每次運行此代碼時都會出現錯誤,因為您的模型不適用于不同的input_shape:
test_1 = [[i for i in range(25)]]; results1 = model.predict(test_1)
test_2 = [[i for i in range(32)]]; results2 = model.predict(test_2)
我建議重新啟動您的運行時環境。
更新1:我認為model.predict多次呼叫導致問題。例如,此示例運行沒有問題:
test_x = tf.random.normal((50, 25, 1))
results = model.predict(test_x)
test_1 = [[i for i in range(25)]]; results1 = model.predict(test_1)
test_1 = [[i for i in range(25)]]; results1 = model.predict(test_1)
test_1 = [[i for i in range(25)]]; results1 = model.predict(test_1)
test_2 = [[i for i in range(32)]]; results2 = model.predict(test_2)
這種行為可能是由于一個錯誤,呼叫model.predict導致記憶體泄漏。您可以通過呼叫model(test_data)或繞過此錯誤model.predict_on_batch(test_data)。例如,這會正確拋出錯誤:
test_x = tf.random.normal((50, 25, 1))
results = model(test_x)
test_1 = tf.expand_dims([[i for i in range(25)]], axis=-1); results1 = model(test_1)
test_1 = tf.expand_dims([[i for i in range(25)]], axis=-1); results1 = model(test_1)
test_1 = tf.expand_dims([[i for i in range(25)]], axis=-1); results1 = model(test_1)
test_2 = tf.expand_dims([[i for i in range(32)]], axis=-1); results2 = model(test_2)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/409752.html
標籤:
上一篇:如何使影像在顫動中向上移動
