Python学习

Python学习

  • tf.placeholder()
  • class与def的区别
  • 类的实例
  • RNN的输入
  • reshape()与shape()
  • tf.cast()
  • python中坐标轴科学计数法
  • 自定义RNN中的loss函数

tf.placeholder()

1.为输入数据分配必要的内存,神经网络构建graph时在模型中的占位。
如:X = tf.placeholder(“float”, [None, n_input])
2.预分配内存,假装这个变量已经存在,实际上不用给它赋予值就可以进行使用,后续通过
tf.Session(config=config_gpu) as sess:
sess.run(init)即可运行之前用到X的部分
之前需要赋值部分:
config_GPU = tf.ConfigProto()
config_GPU.gpu_options.allow_growth = True
3.目的:减小开销,每次的batch替代上一次里面的值

class与def的区别

1.class为类,抽象概念,优点是可以保存状态,起到模板的作用,把一些通用的东西写进类定义中,也就是_init_函数中,实例化时必须输入相应属性,不然报错。
2.def为函数,具体实现,容易理解,但是当系统较大时,重复性多。
总结:class必须要输入相应属性,有点像将多个函数进行功能性封装。

类的实例

类就像是一个集合,类的实例就是集合中的一个元素,将一个类具体化就成为了类的实例。

RNN的输入

报错如下:
ValueError: Input 0 of layer sequential is incompatible with the layer: expected ndim=3, found ndim=2. Full shape received: [None, 256]
原因:RNN的输入应该为3维的;
原理:tensor[seq_len,batch_size,input_dim];
Python学习_第1张图片
图出自:https://www.jianshu.com/p/b942e65cb0a3
batch_size:时间步数

reshape()与shape()

reshape()与原变量可使用同一变量名
shape()需要一个新的变量

tf.cast()

tensorflow中类型强制转换为float32
cast(x, dtype, name=None)

python中坐标轴科学计数法

y轴科学计数法:plt.semilogy(x, y, lw)
x轴科学计数法:plt.semilogx(x, y, lw)
xy轴均科学计数法:plt.loglog(x, y, lw)

自定义RNN中的loss函数

from keras import backend as K
def myloss(batch_y_test, y_pred):
losses = (自定义的函数,包括参数batch_y_test, y_pred)
return losses

model.compile(loss=myloss)

你可能感兴趣的:(Python)