Python 如何通过tensorflow实现独立的CNN?

Python 如何通过tensorflow实现独立的CNN?,python,tensorflow,Python,Tensorflow,我必须使用tf=1.15,我需要在几个阶段训练CNN的不同部分。CNN的第一批s组是可转换的,其他组保持不变 def conv_group_编码器(输入张量,num_潜伏,is_training=True): “卷积编码器用于beta VAE文件中的椅子数据。 基于“beta VAE:学习基础视觉”第13页表1第3行 具有约束变分框架的概念” (https://openreview.net/forum?id=Sy2fzU9gl) Args: 输入张量:将形状张量(批量大小,64,64,数量通道)

我必须使用tf=1.15,我需要在几个阶段训练CNN的不同部分。CNN的第一批s组是可转换的,其他组保持不变

def conv_group_编码器(输入张量,num_潜伏,is_training=True):
“卷积编码器用于beta VAE文件中的椅子数据。
基于“beta VAE:学习基础视觉”第13页表1第3行
具有约束变分框架的概念”
(https://openreview.net/forum?id=Sy2fzU9gl)
Args:
输入张量:将形状张量(批量大小,64,64,数量通道)输入到
构建编码器。
num_潜伏期:要输出的潜伏期变量数。
is_training:图形是否为培训而构建(未使用)。
返回:
平均值:输出带有潜在变量的形状张量(批次大小、潜在数量)
方法
log_var:输出形状张量(批次大小,潜在数量),带有潜在
可变对数方差。
"""
德尔正在接受训练
e1=tf.layers.separable_conv2d(
输入=输入张量,
深度乘以=4,
过滤器=16,
内核大小=4,
步幅=2,
激活=tf.nn.relu,
padding=“相同”,
name=“e1”,
)
e2=tf.layers.separable_conv2d(
输入=e1,
深度乘以=4,
过滤器=16,
内核大小=4,
步幅=2,
激活=tf.nn.relu,
padding=“相同”,
name=“e2”,
)
e3=tf.layers.separable_conv2d(
输入=e2,
深度乘以=4,
过滤器=32,
内核大小=2,
步幅=2,
激活=tf.nn.relu,
padding=“相同”,
name=“e3”,
)
e4=tf.layers.separable_conv2d(
输入=e3,
深度乘以=4,
过滤器=32,
内核大小=2,
步幅=2,
激活=tf.nn.relu,
padding=“相同”,
name=“e4”,
)
组e4=tf.分割(e4,4,轴=1)
平均值列表,日志变量列表=[],[]
对于枚举中的i,sep_e4(组e4):
展平(sep_e4)=tf.层展平(sep_e4)
e5=tf.layers.density(平坦的e4,256,激活=tf.nn.relu,名称=f“e5{i}”)
mean_list.append(tf.layers.dense(e5,num_/4,activation=None,name=f“means_{i}”))
log\u var\u list.append(tf.layers.dense(e5,num\u潜伏//4,activation=None,name=f“log\u var{i}”))
step=tf.train.get\u global\u step()
stage\u steps=(gin.query\u参数('model.training\u steps')//4
阶段=int(步骤//阶段\步骤)
平均数=tf.concat([
平均值列表[:阶段+1],
tf.停止梯度(平均值列表[阶段+1:])
], 1)
log_var=tf.concat([
日志变量列表[:阶段+1],
tf.停止梯度(日志变量列表[阶段+1:])
], 1)
返回平均值,log_var
然而,在将step:tf.Variable转换为int时,我遇到了一些麻烦。
int(step)
:张量的对象没有属性“numpy”。
step.eval()
:无法使用eval()计算张量:未注册默认会话。我不知道如何获取会话,因为它使用tpu_估计器

或者可能有更好的方法来剪切其余参数的梯度