Tensorflow
深度学习中Tensorflow的使用
腾阳山泥若
简单记录开发中遇到的问题,方便快速查找
展开
-
【tensorflow】tf.slice()
tf.slice(inputs, begin, size, name)是tensorflow中对向量inputs的切片,begin表示每个维度要抽取的开始位置,size表示从开始位置往后要抽取的元素个数,若某个维度size为-1则表示抽取对应维度的所有元素。例子import tensorflow as tfimport numpy as npxyz = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]原创 2020-09-11 09:19:49 · 176 阅读 · 0 评论 -
【tensorboard】可视化模型
关键使用tf.summary.trace_on(graph=True, profiler=True)跟踪张量的流动,tf.summary.trace_export导出图的结构。import tensorflow as tfimport os# The function to be [email protected] my_func(x, y): # A simple hand-rolled layer. return tf.nn.relu(tf.matmul(x, y)原创 2020-09-06 14:48:14 · 230 阅读 · 0 评论 -
【ERROR】Failed to get convolution algorithm. This is probably because cuDNN failed to initialize
1、有可能是显存不足,尝试减小batchsize2、os.environ['TF_FORCE_GPU_ALLOW_GROWTH'] = 'true'这个语句的意思是,TensorFlow 在分配显存的时候,设置为可以逐步分配,需要多少显存,就一点点往上添,直到够用为止。比如GPU显存为8GB,开始训练一个模型,TensorFlow 先分配100MB,然后200MB 、300MB……最后在700MB处停住了,因为实际700MB就够用了。参考自...原创 2020-09-06 12:35:29 · 571 阅读 · 0 评论 -
【keras】多GPU训练ModelCheckpoint()保存模型
使用多GPU训练时需要保存的是在CPU上创建的单模型,如果直接使用ModelCheckpoint会报错,需要重写ModelCheckpoint函数,参考自from keras.callbacks import ModelCheckpointfrom keras.utils import multi_gpu_modelclass ParallelModelCheckpoint(ModelChe...原创 2020-05-08 13:43:18 · 799 阅读 · 0 评论 -
【keras】callbacks的简单使用
常用的callbacks函数有EarlyStopping(提前停止训练) ModelCheckpoint(保存最优模型)CSVLogger (保存训练过程的精度、loss等)ReduceLROnPlateau(当模型性能无法进一步提升时降低学习率),以下为一个简单的例子from sklearn.datasets import make_blobsfrom keras.layers import...原创 2020-05-08 11:38:12 · 1238 阅读 · 0 评论 -
【keras】将loss作为模型的一个层
使用Keras编写复杂的loss时一般会将loss作为模型的一个层,则模型的输入包括原始输入和y_true,模型输出即为loss,例如yolov3keras版本的代码就是将loss作为模型的一层,因其计算loss比较复杂。下面介绍一个简单的例子,利用神经网络预测Iris数据集需要的包import keras.backend as Kfrom keras import layers, Mode...原创 2020-04-20 15:37:01 · 1145 阅读 · 3 评论 -
【keras】实现加权交叉熵(多分类)
在做图像分割任务时由于背景类别占比很大,导致网络倾向于预测背景,虽然准确率很高,但是目标区域完全没有被预测,因此考虑修改loss函数交叉熵,将背景类别的权重降低。实现交叉熵计算交叉熵的计算原理直接看一个例子:下面基于keras和tensorflow实现交叉熵,假设有3个样本,共4类(0123),y_pred为网络的输出(logits,即未softmax)import numpy as n...原创 2020-04-20 10:55:43 · 7988 阅读 · 1 评论 -
【keras】将tensor转换为numpy
将tensor转换为numpyfrom keras import backend as Ktensor = K.constant([1, 2, 3])numpy = K.eval(tensor)print(type(tensor), type(numpy))print(tensor)print(numpy)>>> <class 'tensorflow.pyt...原创 2020-04-16 16:20:01 · 12883 阅读 · 41 评论 -
【tf】tf.TensorArray和tf.while_loop组合使用
TensorArrayTensorArray可以看做是具有动态size功能的Tensor数组。通常都是跟while_loop或map_fn结合使用。常用方法有write(index,value):将value写入TensorArray的第index个位置stack:将TensorArray中的值作为Tensor返回while_loopfinal_state = tf.while_l...原创 2020-04-13 15:03:31 · 841 阅读 · 0 评论 -
【keras】layers.ZeroPadding2D()
ZeroPadding2D,传入的参数如果是一个二维的tuple,((top_pad, bottom_pad), (left_pad, right_pad)),它表示在上下左右分别补多少层零。from keras.layers import ZeroPadding2D, Inputfrom keras import Modelfrom numpy import *image = arra...原创 2020-04-11 15:12:42 · 6468 阅读 · 0 评论 -
【tf】tf.tile()
https://blog.csdn.net/tsyccnh/article/details/82459859原创 2020-04-11 14:03:13 · 74 阅读 · 0 评论 -
【keras】使用tensorboard可视化
只需要在fit或fit_generator前加上这几句代码即可,log_filepath前要加r解析为路径,否则会报错log_filepath = r'logs'tb_cb = TensorBoard(log_dir=log_filepath, write_images=1, histogram_freq=1)cbks = [tb_cb]model.fit_generator(genera...原创 2020-04-08 09:28:49 · 1032 阅读 · 0 评论 -
【keras】使用fit_generator训练超大数据集
对于小规模的数据集我们可以将其一次性读入内存(CPU)中然后再分batch让GPU去训练,只要简单地使用fit函数即可;然而当数据集规模超大时,一次性读入所有数据会使得内存溢出(与GPU无关,GPU是显存,batch_size过大才会导致显存爆炸),我们需要使用fit_generator来训练如下,fit_generator(generator, steps_per_epoch=None, ...原创 2020-04-07 16:02:06 · 2657 阅读 · 2 评论 -
【keras】利用LSTM做简单的时间序列预测
首先加载时间序列数据集,数据集import pandas as pddata = pd.read_csv('SP500.csv')data.head()数据集大概是这样的,这里我们选择’Close’这一列特征进行预测。将其可视化import matplotlib.pyplot as pltimport numpy as npdata_close = np.reshape(dat...原创 2020-04-06 16:28:48 · 3121 阅读 · 5 评论 -
【keras】搭建多层lstm层
记住中间的lstm层需要返回所有timestep的输出作为下一层lstm的输入,所以出了最后一层lstm外其它层的return_sequences=Truefrom keras.layers import LSTM, Inputinputs = Input(shape=[4, 1]) # num_step(4) input_size(1)lstm1 = LSTM(units=32, ret...原创 2020-04-05 22:38:03 · 3866 阅读 · 2 评论 -
【keras】多GPU训练模型及保存
from keras.utils import multi_gpu_model # Replicates `model` on 8 GPUs.# This assumes that your machine has 8 available GPUs.parallel_model = multi_gpu_model(model, gpus=8)parallel_model.compile(...原创 2020-04-01 22:35:48 · 518 阅读 · 0 评论 -
【keras】layers.UpSampling2D()
在U-Net代码中出现过UpSampling2D,对卷积结果进行上采样从而将特征图放大,这个方法没有引入可训练的参数,就是一个简单的插值,一个重要的参数是size,该操作将数据的行和列分别重复size[0]和size[1]次,见如下例子x = numpy.array([[1, 2], [3, 4]])inputs = layers.Input(shape=(2, 2, 1))out = la...原创 2020-03-27 22:49:26 · 15010 阅读 · 4 评论 -
【keras】将标签转化为one-hot
from keras.utils import to_categoricaly = numpy.array([0, 1, 5, 2, 3])onehot = to_categorical(y, num_classes=6)print(onehot)# output[[1. 0. 0. 0. 0. 0.] [0. 1. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 1.]...原创 2020-03-26 15:36:19 · 2295 阅读 · 0 评论 -
【keras】搭建简单的神经网络
from keras import layersfrom keras import Modelfrom keras.optimizers import Adamimport tensorflow as tfimport numpyclass mymodel: def build(self, num_classes=3, dim=4): x = layers.In...原创 2020-03-24 20:32:28 · 225 阅读 · 0 评论 -
【tf】tf.nn.relu_layer()
tf.nn.relu_layer(x, weights, biases, name=None)tf.nn.relu(x)函数对卷积后的结果进行激活,而tf.nn.relu_layer对输入变量x和weights做矩阵乘法并加上biases再做relu非线性变换得到activation...原创 2020-03-23 14:50:22 · 266 阅读 · 0 评论 -
【tf】tf.expand_dims()
增加张量维度import tensorflow as tfa = tf.constant([1, 2, 3, 4, 5], dtype=tf.float32)print('Tensor a', a)>>> Tensor a tf.Tensor([1. 2. 3. 4. 5.], shape=(5,), dtype=float32)b = tf.expand_dims...原创 2020-03-23 10:35:57 · 106 阅读 · 0 评论 -
【tf】tf.reduce_mean
x = tf.Variable([[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]], dtype=tf.float32)print(tf.reduce_mean(x, axis=0)) # 每一列求平均>>> tf.Tensor([1. ...原创 2020-02-13 22:16:14 · 113 阅读 · 0 评论 -
【tf】tf.nn.dropout
dropout是神经网络中用来防止过拟合的技巧,在没一轮训练时随机丢弃一些神经元。tf.nn.dropout(x, keep_prob, noise_shape=None, seed=None, name=None)x:一个浮点型Tensor,注意不能是sparsetensor。...原创 2020-02-13 22:00:45 · 141 阅读 · 0 评论 -
【tf】tf.random_shuffle
张量沿着维度0(按行打乱)重新打乱,例如,一个 3x2 张量可能出现的映射是: [[1, 2], [[5, 6], [3, 4], ==> [1, 2], [5, 6]] [3, 4]]注意,只能按行打乱,如果需要打乱列,则先用tf.transpose进行转置然后shuffle最后再转置回来。...原创 2020-02-13 21:37:55 · 492 阅读 · 0 评论