问题描述:
随机生成数据集,进行加法运算。构建神经网络来实现加法器功能
实现代码:
生成100个随机数据
import numpy as np
from tensorflow import keras
import tensorflow as tf
a=np.random.randint(1,100,100)
b=np.random.randint(1,100,100)
将数据转化为100个样本,每个样本1个元素
x1=a.reshape(100,1)
x2=b.reshape(100,1)
合并为100个样本,每个样本2个元素
x_train=np.hstack((x1,x2))
x_train
生成结果标签
c=a+b
y_train=c.reshape(100,1)
y_train
设置输入大小
inputs = keras.Input(shape=x_train.ndim,)
添加全连接层
x = keras.layers.Dense(30, activation=tf.nn.relu)(inputs)
设置输出大小
outputs = keras.layers.Dense(activation=tf.nn.relu,units=1)(x)
model = keras.Model(inputs=inputs, outputs=outputs)
设置合适的损失函数
model.compile(optimizer='Adam',
loss='mse',
metrics=['mean_absolute_error'])
model.summary()
开始训练
model.fit(x=x_train, y=y_train,epochs=20, batch_size=20)
对模型进行预测,输入为3和5
arr1 = np.array([[3]])
arr2 = np.array([[5]])
x_arr = np.hstack((arr1,arr2))
y_pred = model.predict(x = x_arr )
y_pred
实现截图:
总结:
因为输入数据是随机而且总样本只有100个。所以每次迭代的损失和验证不同相同。
解决方法有:
1.增加epoch的迭代次数
2.增加总样本量到1000个