清尘blog 2020-10-16 17:30 采纳率: 100%
浏览 292

使用tf.keras.models.Sequential创建一个实例,调用该实例的fit方法时如果不指定butch_size 则butch_size 是多少?

我在使用tf.keras时,训练数据集中有55000条数据,在使用fit方法时没有指定butch_size。结果产生了一下结果,1719 代表的是什么那,问什么不是55000啊
图片说明

# ->实战分类模型之数据归一化
# 实战分类模型之模型构建
# 数据读取和显示
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import sklearn
import pandas as pd
import os
import sys
import time
import tensorflow as tf
from tensorflow import keras
from sklearn.preprocessing import StandardScaler

# sys.version_info(major=3, minor=7, micro=7, releaselevel='final', serial=0)
# matplotlib 3.3.0
# numpy 1.18.5
# pandas 1.1.0
# sklearn 0.23.1
# tensorflow 2.3.1
# tensorflow.keras 2.4.0

fashion_mnist = keras.datasets.fashion_mnist
(x_train_all, y_train_all), (x_test, y_test) = fashion_mnist.load_data()
# 将训练数据集分为测试集和验证集,避免过拟合
x_valid, x_train = x_train_all[:5000], x_train_all[5000:]
y_valid, y_train = y_train_all[:5000], y_train_all[5000:]

print(x_valid.shape, y_valid.shape)
print(x_train.shape, y_train.shape)
print(x_test.shape, y_test.shape)

# (5000, 28, 28) (5000,)
# (55000, 28, 28) (55000,)
# (10000, 28, 28) (10000,)

# 数据归一化, x = (x-u)/std, u 为x的均值,std为方差
scaler = StandardScaler()
# 该方法需要传入一个二维数组,
x_train_scaled = scaler.fit_transform(x_train.astype(np.float32).reshape(-1, 1)).reshape(-1, 28, 28)
x_valid_scaled = scaler.transform(x_valid.astype(np.float32).reshape(-1,1)).reshape(-1,28,28)
x_test_scaled = scaler.transform(x_test.astype(np.float32).reshape(-1,1)).reshape(-1,28,28)



model = keras.models.Sequential()
# 添加输入层,并将输入的图片展开,将28*28的数据展平,变成一个一维向量
model.add(keras.layers.Flatten(input_shape=(28, 28)))
# 添加一层全连接层,上一层输入为 (None,300)
# relu激活函数:y = max(0,x)
model.add(keras.layers.Dense(300, activation='relu'))
# 再添加一层全连接层,上一层输出为(None,100)
model.add(keras.layers.Dense(100, activation="relu"))
# 再添加一层全连接层,上一层的输出为(None,10)
# softmax激活函数: 将向量变为概率分布,
# 例如 x=[x1,x2,x3] ==> y = [(e^x1)/sum,(e^x2)/sum,(e^x3)/sum) ,sum = e^x1 + e^x2 + e^x3
model.add(keras.layers.Dense(10, activation="softmax"))
# compile 配置模型测试和训练时使用的损失函数,优化器,要评估的指标等信息
# 使用 sparse_categorical_crossentropy 的原因: 此处使用的 y 是一个数值而不是一个向量,
# 如果是一个向量则使用categorical_crossentropy 。
# metrics 模型在训练和测试期间要评估的指标列表。
model.compile(loss="sparse_categorical_crossentropy",
              optimizer='sgd',
              metrics=['accuracy'])

# epochs 训练多少次,validation_data  训练过程中进行验证时使用的验证数据集。
# model.fit 可以返回训练时所产生的一些结果
history = model.fit(x_train_scaled, y_train, epochs=10,validation_data=(x_valid_scaled,y_valid))


def plot_learning_curves(history):
    pd.DataFrame(history.history).plot(figsize=(8, 5))
    plt.grid(True)
    plt.gca().set_ylim(0, 1)
    plt.show()


plot_learning_curves(history)
model.evaluate(x_test_scaled,y_test)
  • 写回答

2条回答 默认 最新

  • threenewbee 2020-10-17 00:18
    关注

    不指定batchsize那么就不分批,相当于batchsize=你的样本大小。

    评论

报告相同问题?

悬赏问题

  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算