TensorFlow/Keras
小林书店副编集
此人不懒,什么都没有写
展开
-
迁移学习 colab 完整示例:fruits-360 数据集
这里当前目录下已经有fruits-360这个数据集. 关于调用数据集的方法可以查看我另一篇文章.准备import tensorflow as tfimport tensorflow.keras as kerasfrom tensorflow.keras.preprocessing.image import load_img, img_to_array, array_to_img, ImageDataGenerator创建 Generator创建 ImageDataGenerator. 由于这个原创 2020-08-02 16:57:06 · 434 阅读 · 0 评论 -
使用 Keras 的 ImageDataGenerator 划分训练集和测试集
Keras的ImageDataGenerator可以方便的读入文件夹中的图片并自动生成训练数据 . 如果图片已经被分成训练集和测试集两个文件夹, 可以独立创建两个ImageDataGenerator. 但是在很多情况下, 作者提供的数据集并不区分训练集和测试集, 这时候也可以使用ImageDataGenerator.假设当前目录下有一个 Mushrooms数据集, 里面有9个子文件夹, 分别是9种蘑菇. 可以使用以下代码将生成ImageDataGenerator, 把数据集分成70%训练集和30%测试集.原创 2020-08-02 02:24:37 · 2435 阅读 · 1 评论 -
谷歌 colab调用 Kaggle 数据集
首先需要有 Kaggle 账号下载个人 API Token上传Token到 Google Drive把下载的kaggle.json上传到 Google Drive 上新建的一个文件夹, 例如Kaggle文件夹新建 colab 笔记挂载 Google Drive, 运行以下代码import osos.environ['KAGGLE_CONFIG_DIR'] = "/content/drive/Kaggle"切换到这个文件夹os.chdir('/content/drive/Kaggle')原创 2020-08-02 02:17:59 · 1271 阅读 · 0 评论 -
TensorFlow/Keras binary_crossentropy损失函数
In [22]: y_true = [[0], [1]] In [23]: y_pred = [[0.9], [0.9]]原创 2020-08-01 21:46:45 · 1249 阅读 · 0 评论 -
binary_crossentropy和BinaryCrossentropy的区别
只能说官方的命名有点太随意,使用上二者有点细微区别。一般compile的时候,使用的是小写的binary_crossentropyy_true = [[0., 1.], [0., 0.]]y_pred = [[0.6, 0.4], [0.4, 0.6]]# Using 'auto'/'sum_over_batch_size' reduction type.bce = tf.keras.losses.BinaryCrossentropy()bce(y_true, y_pred).numpy()原创 2020-05-26 03:29:41 · 3300 阅读 · 1 评论 -
损失函数BinaryCrossentropy例子说明
官方说明书的例子其实特别简单明了,y_true = [[0., 1.], [0., 0.]]y_pred = [[0.6, 0.4], [0.4, 0.6]]# Using 'auto'/'sum_over_batch_size' reduction type.bce = tf.keras.losses.BinaryCrossentropy()bce(y_true, y_pred).numpy()从这个例子也可以看出,BinaryCrossentropy是支持one-hot编码的。...原创 2020-05-26 03:23:45 · 2030 阅读 · 1 评论 -
理解GAN对抗神经网络的损失函数和训练过程
GAN最不好理解的就是Loss函数的定义和训练过程,这里用一段代码来辅助理解,就能明白到底是怎么回事。其实GAN的损失函数并没有特殊之处,就是常用的binary_crossentropy,关键在于训练过程中存在两个神经网络和两个损失函数。np.random.seed(42)tf.random.set_seed(42)codings_size = 30generator = keras.models.Sequential([ keras.layers.Dense(100, activati原创 2020-05-20 20:31:31 · 5846 阅读 · 3 评论 -
RNN自然语言处理训练数据生成过程:示例
第一次接触RNN很容易被数据处理弄糊涂,这里总结一下,总把每一步的处理结果都打印出来。数据下载shakespeare_url = "https://raw.githubusercontent.com/karpathy/char-rnn/master/data/tinyshakespeare/input.txt"filepath = keras.utils.get_file("shakespe...原创 2020-05-07 16:25:22 · 481 阅读 · 0 评论 -
卷积神经网络的“卷积”操作不等于数学上定义的卷积操作
在介绍卷积神经网络CNN的时候,大部分教材在介绍“卷积操作”的时候都与下面这张图类似的说明这点让人很困惑,因为在数学上,卷积运算是这么定义的(f∗g)(t)=∫0tf(τ)g(t−τ) dτ(f * g )(t) = \int_{0}^{t} f(\tau) g(t - \tau)\, d\tau(f∗g)(t)=∫0tf(τ)g(t−τ)dτ很明显,在与f(τ)f(\tau)f(τ)相...原创 2020-05-06 20:24:05 · 637 阅读 · 1 评论 -
categorical_crossentropy和sparse_categorical_crossentropy的区别:实例讲解
如果y是one-hot encoding格式,使用sparse_categorical_crossentropy[1,0,0][0,1,0][0,0,1]如果y是整数,非one-hot encoding格式,使用categorical_crossentropy123原创 2020-05-05 20:45:15 · 1440 阅读 · 2 评论 -
RNN神经网络层的输出格式和形状
tf.keras.layers.RNN( cell, return_sequences=False, return_state=False, go_backwards=False, stateful=False, unroll=False, time_major=False, **kwargs)RNN的输出非常tricky,官方文档要细读。If return_state: ...原创 2020-05-05 19:08:56 · 854 阅读 · 0 评论 -
TensorFLow: Gradient Clipping
The parameters clipnorm and clipvalue can be used with all optimizers to control gradient clipping。Keras的所有optimizer都可以使用clipnorm和clipvalue来防止梯度过大。from keras import optimizers# All parameter ...原创 2020-04-24 21:00:00 · 234 阅读 · 0 评论 -
一个高效的TensorFlow数据集前处理代码
def csv_reader_dataset(filepaths, repeat=1, n_readers=5, n_read_threads=None, shuffle_buffer_size=10000, n_parse_threads=5, batch_size=32): datas...原创 2020-04-23 16:48:00 · 235 阅读 · 0 评论 -
一文讲解TensorFlow数据接口 tf.data.Dataset
导入数据X = pd.read_csv('./datasets/housing/housing.csv')X = X.sample(n=10)X.drop(columns = X.columns.difference(['longitude']), inplace=True)为了避免报错,先进行格式转换:X = np.asarray(X).astype(np.float32)...原创 2020-04-23 00:25:00 · 364 阅读 · 0 评论 -
TensorFlow regularization loss和model.losses
以如下模型为例,l2_reg = keras.regularizers.l2(0.05)model = keras.models.Sequential([ keras.layers.Dense(30, activation="elu", kernel_initializer="he_normal", kernel_regulari...原创 2020-04-22 20:13:00 · 1036 阅读 · 0 评论 -
手动实现TensorFlow的训练过程:示例
参考文献:Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systemsl2_reg = keras.regularizers.l2(0.05)model = keras.models.Seq...原创 2020-04-22 19:54:00 · 272 阅读 · 0 评论 -
TensorFlow Autodiff自动微分
with tf.GradientTape(persistent=True) as tape: z1 = f(w1, w2 + 2.) z2 = f(w1, w2 + 5.) z3 = f(w1, w2 + 7.) z = [z1,z3,z3][tape.gradient(z, [w1, w2]) for z in (z1, z2, z3)]输出结果...原创 2020-04-22 17:00:00 · 191 阅读 · 0 评论 -
TensorFlow的tf.where函数详解与例子
官方说明:If both x and y are None, then this operation returns the coordinates of true elements of condition. The coordinates are returned in a 2-D tensor where the first dimension (rows) represents...原创 2020-04-21 17:08:00 · 2281 阅读 · 0 评论 -
AttributeError: module 'tensorflow_core._api.v2.config' has no attribute 'list_physical_devices'
AttributeError: module ‘tensorflow_core._api.v2.config’ has no attribute ‘list_physical_devices’应该是接口更新了,改成以下接口就不会报错了。查看所有GPUtf.config.experimental.list_physical_devices('GPU')查看所有设备tf.config.ex...原创 2020-04-27 20:02:30 · 7847 阅读 · 2 评论 -
TensorFlow学习笔记(一)
光复制几个代码到自己机器上跑是没有用的。要理解!公式理解有困难,就用图片辅助理解!MNIST中数字的表示方法什么是one-hot? “One-hot” encoding means that you represent the label “6” by using a vector of 10 values, all zeros but the 6th value which is 1. It原创 2017-05-31 20:20:28 · 300 阅读 · 0 评论 -
TensorFlow Variable 和 Tensor 的区别
Variable是Tensor的封装, 在反向传播中其状态会被更新. 所有 Variable 都需要初始化之后才能使用. 一旦 Session 终止, Variable 也就不存在了.可以将 Variable看作训练中的"变量", 而Tensor则是具体的数据.assign和assign_add的作用对象都是Variable.Variable使用assign方法更新变量后, 依然还...原创 2020-01-02 20:44:00 · 544 阅读 · 0 评论 -
Conda 中安装 Keras
conda create -n keras python=3.5 ipykernelactivate keraspython -m ipykernel install --user --name kerasjupyter notebook使用这种方法安装的 Keras 才能被 Jupyter Notebook 调用。I found the answer at http://ip...原创 2018-10-02 21:06:00 · 147 阅读 · 0 评论 -
一文总结Keras的loss函数和metrics函数
Loss函数定义:keras.losses.mean_squared_error(y_true, y_pred)用法很简单,就是计算均方误差平均值,例如loss_fn = keras.losses.mean_squared_errora1 = tf.constant([1,1,1,1])a2 = tf.constant([2,2,2,2])loss_fn(a1,a2)...原创 2020-04-22 19:17:00 · 3322 阅读 · 0 评论 -
tf.keras自定义损失函数
自定义损失函数In statistics, the Huber loss is a loss function used in robust regression, that is less sensitive to outliers in data than the squared error loss. A variant for classification is also so...原创 2020-04-21 18:01:00 · 1010 阅读 · 0 评论 -
Keras克隆层
mdl_A = keras.models.load("mdl_A.hf")mdl_B_on_A = keras.models.Sequential(mdl_A.layers[:-1])mdl_B_on_A.add(keras.layers.Dense(1, activation = "sigmoid")需要注意的是,此时mdl_A和mdl_B共享神经网络的权重。解决的方法是使用c...原创 2020-04-20 20:33:00 · 219 阅读 · 0 评论 -
Keras learning_phase()和learning_phase_scope()
tf.keras.backend.learning_phase()The learning phase flag is a bool tensor (0 = test, 1 = train) to be passed as input to any Keras function that uses a different behavior at train time and test ...原创 2020-04-20 22:24:00 · 1420 阅读 · 0 评论 -
Keras函数式API介绍
参考文献:Géron, Aurélien. Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems. O'Reilly Media, 2019.Keras的Sequential顺序模型可...原创 2020-04-20 19:37:00 · 230 阅读 · 0 评论 -
Keras搭建一个Wide & Deep 神经网络
Wide & Deep 神经网络2016年谷歌公司的Cheng等人发表的文章Wide & Deep Learning for Recommender Systems介绍了一种新的架构,Wide & Deep ANNs.通过将输入层的部分或全部信息直接与输出层相连接,简单的特征可以通过捷径(short path)进行学习,复杂的特征则通过深层路径(deep p...原创 2020-04-20 19:39:00 · 474 阅读 · 0 评论 -
Keras自定义Layer使用说明
自定义 Layer自定义激活函数函数形式比较简单的时候可以用lambda函数:clipped_relu = lambda x: K.activations.relu(x, max_value=4000)Layer类class MLPBlock(Layer): def __init__(self): super(MLPBlock, self).__init__() ...原创 2020-01-02 22:57:00 · 500 阅读 · 0 评论 -
Keras Layer 的 call(x) 和 input_shape
今天用Keras编程的时候发现一个问题,···input_layer = K.layers.Input(shape=(10,))x = K.layers.Dense(20)(input_layer)x = K.layers.Dense(20)(x)···以上写法是可行的,但是以下写法却不行L = K.layers.Dense(20)y = L(input_layer)y...原创 2020-01-01 04:56:00 · 1239 阅读 · 0 评论 -
Keras get Tensor dimensions
int_shape(y_true)[0]int_shape(y_true)[1]原创 2019-10-21 17:55:00 · 102 阅读 · 0 评论 -
Keras class_weight和sample_weight用法
搬运: https://stackoverflow.com/questions/57610804/when-is-the-timing-to-use-sample-weights-in-kerasimport tensorflow as tfimport numpy as npdata_size = 100input_size=3classes=3x_train = np...原创 2019-12-19 18:52:00 · 1944 阅读 · 0 评论 -
Keras MAE和MSE source code
def mean_squared_error(y_true, y_pred): if not K.is_tensor(y_pred): y_pred = K.constant(y_pred) y_true = K.cast(y_true, y_pred.dtype) return K.mean(K.square(y_pred - y_true), ...原创 2019-10-21 17:54:00 · 684 阅读 · 0 评论 -
R语言 Keras Training Flags
在需要经常进行调参的情况下,可以使用 Training Flags 来快速变换参数,比起直接修改模型参数来得快而且不易出错。https://tensorflow.rstudio.com/tools/training_flags.html使用 flags()library(keras)FLAGS <- flags( flag_integer("dense_units1"...原创 2019-04-10 22:11:00 · 152 阅读 · 1 评论 -
frugally-deep: Header-only library for using Keras models in C++
// Convenience wrapper around predict for models with // single tensor outputs of shape (1, 1, 1), // typically used for regression or binary classification. // Returns this one a...原创 2019-03-13 21:57:00 · 162 阅读 · 0 评论 -
Keras BatchNormalization层
https://github.com/keras-team/keras/issues/1523原创 2019-03-12 22:05:00 · 490 阅读 · 0 评论 -
Batch Normalization和Layer Normalization的区别
网上有不少解释,包括下面这张图片光靠图片理解还是不够,而且特别容易理解反了。这里用一个实例进行讲解。一个非常简单的数据集,包含两个sample,3个features。第一个sample: X1=1.0,X2=1.0, X3=1.0第二个sample: X1=10.0,X2=10.0, X3=10.0data = tf.constant([1.0,1.0,1.0],[10.0,10.0,...原创 2020-04-27 21:41:20 · 800 阅读 · 0 评论