C:\Users\holiday.keras 用来存放keras的dataset
与Keras关系
Tensorflow于Keras的关系,目前两者没啥区别
import tensorflow as tf tf.keras # 或者 from tensorflow import keras
即使 pip install keras
安装的依然是Tensorflow版本的Keras
Keras是TensorFlow的一个依赖(dependency)。而且,从设计上希望用户只透过TensorFlow来使用,即tf.keras。但由于Python本身的性质,你直接 import keras
并不会报错,但并不是设计者的本意
数据类型
待优化张量
tf.Variable() 节省计算
tf.keras.Sequential()
这个API是tf.keras.models.Sequential
的别名Sequential
groups a linear stack of layers into a tf.keras.Model. 组合一个线性的堆栈到model中
tf.keras.Sequential(
layers=None, name=None
)Sequential
provides training and inference features on this model. 提供一个可训练和推理的特征
model.compile() 训练的configures
compile(
optimizer=’rmsprop’, loss=None, metrics=None, loss_weights=None,
weighted_metrics=None, run_eagerly=None, **kwargs
)
model.fit() 模型开始训练
history = model.fit() 可以返回一个history
model.predict() 预测
tf.keras.layers
Dense() 定义FC层
model = tf.keras.Sequential([tf.keras.layers.Dense(10,input_shape=(3,), activation=’relu’)])
Flatten() 拉平
Dropout()
函数式API
可以实现多输入
x = keras.layers.Flatten()(input)
keras.layers. 系列都可以用这个方法
tf.keras 交叉熵
网络容量
神经元越多,层数越多,神经网络拟合能力越强,但是训练速度、难度越大,越容易发生过拟合
- 神经元增加的影响不大
- 层数的增加会大大提高拟合能力
- 单层的神经元个数少,会造成信息瓶颈,会丢失过多的信息
tf.data
有些数据集已经被写好针对的dataset对象,load起来就很方便
但是自定义数据可咋整?
tf.data.Dataset
dataset = tf.data.Dataset.from_tensor_slices({“a”:[1,2,3,4],
“b”:[6,7,8,9]}) # 以字符串的方式
dataset是一个对象,有shuffle,map等属性或者方法
获取dataset内的数字
for ele in dataset:
print(ele)
for ele in dataset.take(4): # 指定获取前4个数字
print(ele)
next(iter(dataset1.take(1)))