Tensorflow学习
Better-1
这个作者很懒,什么都没留下…
展开
-
问题笔记:keras定义相同的loss和metric,两者输出不同的原因
通过查询总结,大致的说法是:loss是完成所有batch之后,所有batch得到的loss的加权平均;metric是当最后一个loss固定之后,网络参数继续反向传播更新,metric是更新之后重新预测的结果,所以会有偏差。?但是为何 val时候,仍然不同。...原创 2020-05-20 08:20:28 · 610 阅读 · 2 评论 -
python axis
axis=0:在第一维操作axis=1:在第二维操作axis=-1:在最后一维操作很多函数的操作都需要指明维度,np.argmax,keras.mean()…维度问题值得好好思考。某一维的操作,操作完剩下另外两维。>>> a = np.arange(24).reshape(2,3,4)>>> aarray([[[ 0, 1, 25, 35], [ 4, 5, 6, 7], [ 8, 9, 10, 11]],原创 2020-05-20 08:08:22 · 174 阅读 · 0 评论 -
keras自定义loss函数
自定义loss函数很重要,在写rmse的时候,发现keras并没有,所以找了其他博客。其实也很简单,输入是真实值和预测值。rmse:def rmse(y_true, y_pred): return K.sqrt(K.mean(K.square(y_pred - y_true), axis=-1))......model.compile(loss=rmse, optimizer='adam', metrics=['mae']) loss不用双引号,自定义函数源码"""Built-in原创 2020-05-19 20:33:53 · 1898 阅读 · 0 评论 -
两个模型或者特征的融合-concatenate笔记
keras的序贯式不够灵活,采用函数式。融合要注意concatenate后面的axis的选择。除了叠加的维度之外,其他维度都必须相同。注意两个input,然后fit里面的输入是[input1,input2]可以定义两个model函数,然后定义第三个model表示为前两个的融合。下面是在FC层的融合,实际上特征数目增加了。完全可以不用这么麻烦,直接定义在一个函数里面即可,连接的时候把前面定义的直接连到后面要输入的层中。def model_ff(input2): n_hidden_5 = 51原创 2020-05-19 00:11:51 · 5546 阅读 · 4 评论 -
keras history 导出loss
model.summary() # 可以画出总体的网络结构model.compile(loss='mse', optimizer='adam', metrics=['mae'])history1 = model.fit([x_train, acc_fft_train], y_train, batch_size=batch_size, epochs=training_epochs, shuffle=True, valida原创 2020-05-18 17:56:18 · 1230 阅读 · 0 评论 -
image_dim_ordering()
函数描述:返回默认的图像的维度顺序(‘tf’或‘th’)对2D数据来说:tf假定维度顺序为(rows,cols,channels)th假定维度顺序为(channels, rows, cols)对3D数据而言:tf假定(conv_dim1, conv_dim2, conv_dim3, channels)th则是(channels, conv_dim1, conv_dim2, conv_dim3)正是因为keras封装了两种后端引擎Theano/Tensorflow,通过将二者的函数统一封装,使原创 2020-05-15 20:39:15 · 1314 阅读 · 1 评论 -
data augmentation
datagen = ImageDataGenerator( # 图像增强 featurewise_center=False, # set input mean to 0 over the dataset samplewise_center=False, # set each sample mean to 0 featurewise_std_normalization=...原创 2020-05-06 11:39:55 · 164 阅读 · 0 评论 -
python numpy.where()函数实例
numpy.where(condition[,x,y])返回元素,可以是x或y,具体取决于条件(condition)当数组是一维数组时,返回的值是一维的索引,所以只有一组索引数组import numpy as npa = np.array([0., 1., 2., 3., 4., 5.])print(np.where(a > 2))(array([3, 4, 5...原创 2020-04-10 11:00:21 · 516 阅读 · 0 评论 -
numpy()的类型-astype、dtype
查到一共有四个方法对于numpy数组:ndim、shape 、astype 、 dtypendim返回的是一个数,表示的是数组的维度;shape返回的是数组的size,dtype返回的是数组中值的类型;astype是强制类型转换:可以转换为 float64、int32、str。注意加引号,如果字符串数组表示的全是数字,也可以用astype转化为数值类型,如果非数字,str不能转换为float。...原创 2020-04-06 16:52:52 · 2260 阅读 · 0 评论 -
one-hot vector转换
可以使用keras.utils.to_categorical方法 to_categorical(y, num_classes=None, dtype='float32')将整型的类别标签转为onehot编码。y为int数组,num_classes为标签类别总数,大于max(y)(标签从0开始的)。一般来说,最大值是多少则独热编码就有多少,可以更多,如果没有定义标签的类别数目,就默认是最大的y...原创 2020-04-06 16:34:43 · 684 阅读 · 0 评论 -
使用tensorboard的小结-终于成功
先通过代码生成文件,然后通过cmd,首先cd到文件所在的目录,或者所在盘即可,然后使用命令tensorboard --logdir=./文件名,即可得到生成的网址,然后粘贴在谷歌浏览器即可。这时可能无法运行,可以将网址进行修改为localhost:6006。...原创 2020-04-05 15:21:20 · 209 阅读 · 0 评论 -
回调函数的小结
使用keras的回调函数方便许多,可以查看许多信息。参考官方文档:https://keras.io/zh/callbacks/先来一个例子:rom keras.callbacks import ModelCheckpointmodel = Sequential()model.add(Dense(10, input_dim=784, kernel_initializer='uniform...原创 2020-04-05 14:59:16 · 171 阅读 · 0 评论 -
关于看CNN文献时的FLOPS
FLOPS:注意全大写,是floating point operations per second的缩写,意指每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。FLOPs:注意s小写,是floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。最近在研究模型的计算量,发现Pytorch有库可以直接计算模型的...转载 2020-03-20 20:27:48 · 469 阅读 · 0 评论 -
tensorflow小bug
这个小bug为难了我好久,值得记下:TensorFlow TypeError: Fetch argument 0.54229766 has invalid type <type ‘numpy.float32’>, must be…问题就是我写验证集的时候,没有想到变量名称不能一样,不然一个epoch之后变量就变成了结果。pred_test_y, cost1 = sess.run(...原创 2020-03-02 23:24:26 · 99 阅读 · 0 评论 -
numpy.pad的快速理解
在学习cnn的时候,看了网上好多关于np.pad这个函数的理解,说实话,好多不太对,经过自己的尝试和理解,想做下总结,方便其他人学习。举个例子,比较浅显易懂:import numpy as npa = [[1, 2, 3], [1, 3, 4], [1, 2, 3]]print(np.pad(a, ((1, 2), (3, 4)), 'constant', constant_values...原创 2020-02-05 09:53:02 · 311 阅读 · 0 评论 -
MNIST数据集分类的处理
原本是用VS编辑的,但是一直无法下载MNIST—data数据集,最后用了pycharm,以下是手打的,可以直接运行。可以通过改变学习率来改变训练的准确度,学习率为0.2时,准确率最高是0.72,改为0.5后准确率直接从0.89开始增加到0.92;也可以通过改变权值的赋值来提高准确率。# mnist 数据集分类的处理mnist = input_data.read_data_sets("MNIST...原创 2020-01-31 22:42:51 · 692 阅读 · 0 评论 -
Tensorflow入门小程序
# 线性回归预测x_data = np.random.rand(100)noise = np.random.normal(0, 0.01, x_data.shape)y_data = x_data*0.1+0.2+noiseplt.scatter(x_data, y_data)plt.show()# 构建一个线性模型d = tf.Variable(np.random.rand(1)...原创 2020-01-31 11:34:55 · 168 阅读 · 0 评论