有没有办法给子类模型的输出指定具体的名称
即使我的输出层被称为layername1, layername2
,并且我以dict
的名称返回输出,但输出仍然被称为output_1, output_2
from tensorflow.keras.layers import *
from tensorflow.keras.models import *
import tensorflow as tf
from tensorflow import math as tm
class TestModel(Model):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.denselayer = Dense(33, activation='relu')
self.outlayer1 = Dense(1, name='layername1')
self.outlayer2 = Dense(1, name='layername2')
def call(self, inputs):
l_ = self.denselayer(inputs)
out1 = self.outlayer1(l_)
out2 = self.outlayer2(l_)
return {'name1': out1, 'name2': out2}
m = TestModel()
x = tf.zeros((100,100,))
yhat = m(x)
y1 = tf.ones((100,1,))
y2 = 2*tf.ones((100,1,))
m.compile(optimizer='Adam',
#loss = {'layername1': 'mse', 'layername2': 'binary_crossentropy'},
#loss_weights = {'layername1': 1, 'layername2': 1},
loss = ['mse','binary_crossentropy']
)
m.fit(x, [y1, y2])
dx = tf.data.Dataset.from_tensor_slices(x)
dy = tf.data.Dataset.from_tensor_slices({'name1': y1, 'name2': y2})
xy = tf.data.Dataset.zip((dx, dy)).batch(1)
m.fit(xy)
dy = tf.data.Dataset.from_tensor_slices({'output_1': y1, 'output_2': y2})
xy = tf.data.Dataset.zip((dx, dy)).batch(1)
m.fit(xy)
目前没有回答
相关问题 更多 >
编程相关推荐