清尘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=你的样本大小。

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?