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)))
添加回答
举报