Cna*_*Cna 7 python deep-learning keras tensorflow
我有一个神经网络,来自tf.data数据生成器和tf.keras模型,如下所示(简化版本 - 因为它太长了):
dataset = ...
阿tf.data.Dataset与所述对象next_x方法的调用get_next的x_train迭代器和用于next_y方法调用get_next的y_train迭代器.每个标签都是一个(1, 67)热门形式的数组.
图层:
input_tensor = tf.keras.layers.Input(shape=(240, 240, 3)) # dim of x
output = tf.keras.layers.Flatten()(input_tensor)
output= tf.keras.Dense(67, activation='softmax')(output) # 67 is the number of classes
Run Code Online (Sandbox Code Playgroud)
模型:
model = tf.keras.models.Model(inputs=input_tensor, outputs=prediction)
model.compile(optimizer=tf.train.AdamOptimizer(), loss=tf.losses.softmax_cross_entropy, metrics=['accuracy'])
model.fit_generator(gen(dataset.next_x(), dataset.next_y()), steps_per_epochs=100)
Run Code Online (Sandbox Code Playgroud)
gen 定义如下:
def gen(x, y):
while True:
yield(x, y)
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我尝试运行它时,我在model.fit部件中出错:
ValueError: Cannot take the length of Shape with unknown rank.
任何想法都表示赞赏!
我发现出了什么问题。实际上,我必须run先进行下一批,tf.Session然后才能屈服。这是它的工作原理(我不编写其余的代码,因为它保持不变):
model.fit_generator(gen(), steps_per_epochs=100)
def gen():
with tf.Session() as sess:
next_x = dataset.next_x()
next_y = dataset.next_y()
while True:
x_batch = sess.run(next_x)
y_batch = sess.run(next_y)
yield x_batch, y_batch
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1123 次 |
| 最近记录: |