2 回答

TA貢獻1934條經驗 獲得超2個贊
要解決您的問題,您應該做三件事:
1- 將dtype
from更改為這樣multiplication_q
:object
int
multiplication_q = np.array([[10,10],[1,1],[2,2],[0,0],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9],[1,0],[11,10],[27,0],[30,2],[4,3],[17,22],[20,0],[8,13],[21,4],[19,24],[11,19],[8,2],[4,5],[11,11],[1,15],[2,12],[15,3],[18,0],[49,7],[5,7],[12,4]], dtype=int)
2- 在模型的第一個 Dense 層中使用input_shape=(2,)
而不是input_shape=[1]
,如下所示:
model = tf.keras.Sequential([ tf.keras.layers.Dense(units=4, input_shape=(2,)), tf.keras.layers.Dense(units=4), tf.keras.layers.Dense(units=1) ])
3- 對于預測函數,你應該傳遞一個list
oflist
而不是 a ,因為你用oflist
進行了訓練list
list
model.predict([[4, 5]])

TA貢獻1796條經驗 獲得超4個贊
嘗試將第一個密集層中的輸入設置為,將輸入multiplication_q.shape形狀設置為132, 2
編輯:下面的代碼解決了您的問題,盡管您將不得不嘗試一些東西,因為它不是很準確。
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
multiplication_q = np.asarray([[10,10],[1,1],[2,2],[0,0],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9],[1,0],[11,10],[27,0],[30,2],[4,3],[17,22],[20,0],[8,13],[21,4],[19,24],[11,19],[8,2],[4,5],[11,11],[1,15],[2,12],[15,3],[18,0],[49,7],[5,7],[12,4]])
multiplication_a = np.asarray([100,1,4,0,9,16,25,36,49,64,96,0,110,0,60,12,374,0,104,84,456,209,16,20,121,15,24,45,0,343,35,48])
multiplication_q = multiplication_q/np.amax(multiplication_q)
multiplication_a = multiplication_a/np.amax(multiplication_a)
model = tf.keras.models.Sequential()
model.add(tf.keras.Input(shape=(2, )))
model.add(tf.keras.layers.Dense(32, activation='relu'))
model.add(tf.keras.layers.Dense(units=1))
model.compile(loss='mean_squared_error', optimizer=tf.keras.optimizers.Adam(0.1))
history = model.fit(multiplication_q, multiplication_a, epochs=750)
print(model.predict(np.asarray([[4, 5]])/np.amax(multiplication_q)*np.amax(multiplication_a)))
添加回答
舉報