import numpy as np import tensorflow as tf import keras import numpy as np import matplotlib.pyplot as plt from keras.layers import Dense from keras.models import Sequential from keras.optimizers import SGD from keras.layers import Activation from keras.models import load_model # 1 创建数据集 x_data = np.random.rand(200) # 生成数据 200个0-1的随机点 noise = np.random.normal(0, 0.01, x_data.shape) # 生成随机噪声 (均值为0,标准差为0.01) y_data = x_data * 2 + noise # 创建目标值 x_train, y_train = x_data[:160], x_data[:160] # 前160组数据为训练数据集 x_test, y_test = x_data[160:], x_data[160:] # 后40组数据为测试数据集 ''' plt.scatter(x_data, y_data, c='r', marker='x') plt.xlabel('x_data') plt.ylabel('y_data') plt.show() ''' # 2 构建模型 # 使用Sequential模型 model = tf.keras.Sequential() # 增加一个Dense全连接层。在模型中添加一个全连接层 units输出的维度(y) input_dim输入的维度(x) model.add(Dense(units=1, input_dim=1)) # 模型的编译,优化器为sgd即随机梯度下降,损失函数选择mse即均方误差。 model.compile(optimizer='sgd', loss='mse') # 3 模型训练 for i in range(2001): # 训练2000次 batch 批处理 # 训练的损失 train_cost = model.train_on_batch(x_train, y_train) if i % 100 == 0: print('train_cost--', train_cost) # 模型保存 save_path = 'model/tf_model.h5' model.save(save_path) # 模型加载 model = load_model(save_path) # 4 模型预测 y_pred = model.predict(x_train) plt.scatter(x_train, y_train) plt.plot(x_train, y_pred, 'r-', lw=3) # lw 线条粗细 plt.show()
可以通过HDFVIEW 3.1.4查看模型结构。